LINUX.ORG.RU

Как прикрутить сессии пользователей к Mojolicious app?

 , ,


0

1

Знаю, что есть MojoX::Sessions (по памяти), пробовал его подключать, а вышло, что каждому челу давалась всего одна сессия на сервере. Т.е. другой логинится, и сессия предыдущего залогиненного отдается новому. И так каждый раз. Т.е. много клиентов - на сервере одна сессия. Знаю, что где-то что-то не дочитал. Но вот где?

Можете кинуть мини-пример, как правильно использовать эти сессии? Желательно не лайт.

★★★★★

man Mojolicious::Sessions

DESCRIPTION
  Mojolicious::Sessions is a very simple signed cookie based session implementation.
  All data gets serialized with Mojo::JSON and stored on the client-side, but is
  protected from unwanted changes with a signature.
anonymous
()
Ответ на: комментарий от anonymous

в startup {} настраиваешь параметры куки через методы $self->sessions->cookie_* (описаны в мане по сессиям)

Работать с данными через метод **контроллера** 'session':

get : $self->session('username');
set : $self->session({username => 'webcoder'});

Больше примеров в man'е Mojolicious::Controller

anonymous
()
Ответ на: комментарий от anonymous

хм. я, наверное, туплю, но не соображу, как правильно работать с данными пользователя в сессиях. Имеем: авторизация, подтягивание из БД настроек пользователя, работа с ними до окончания сессии. Вот что хранить в данных сессии, чтобы между запросами клиента (разными страничками) не потерять настройки пользователя? ну, чтобы лишний раз БД не трогать. Имхается, что надо где-то структуру настроек сохранять на сервере в памяти. Только не соображу, где и как.

bvn13 ★★★★★
() автор топика
Ответ на: комментарий от bvn13

Mojo::Cache, не? Если данных мало - можешь тупо в самой куке и хранить, она подписывается. Если много - доставай из кэша по ключу-юзернейму, который в куке хранится (в доме который построил Джек).

anonymous
()
Ответ на: комментарий от anonymous

а можешь объяснить странный момент?

из контроллера передаю в свой класс

PhM::SessionManager->new(session => $self->session);

в этом классе проверяю на объявленность этой сессии - проходит проверка. в консоле дебаг:

$VAR1 = 'PharmMarket::Auth';
$VAR2 = {
          'session' => {}
        };

т.е. не bless-нутый хеш, что как бы рознится с документацией на эту сессию: https://metacpan.org/pod/Mojolicious::Controller#session

Что я делаю не так?

bvn13 ★★★★★
() автор топика
Ответ на: комментарий от bvn13

хотя, сделав

$self->session-{suid} = ... #generation of suid
в этом классе, я в дальнейшем получил нужный суид. В двух браузерах - разный, сохраняется между перезагрузкой страниц. Вроде начинаю понимать...

bvn13 ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.