Ruby on Rails: как я могу хранить дополнительные данные в сессии для authlogic - PullRequest
2 голосов
/ 28 января 2010

Я использую Authlogic для аутентификации пользователей.

Я понимаю, как создавать и использовать сеансы, но хочу сохранить дополнительную переменную id в сеансе current_user, созданном authlogic.

Могу ли я просто сделать что-то вроде этого:

session[:authlogic_sess_name] = @extra_id.id

Тем не менее, я не уверен, как называется сеанс authlogic или как получить к нему доступ.

Спасибо!

Ответы [ 2 ]

1 голос
/ 28 января 2010

Почему бы вам не просто сохранить значение в сеансе?

session[:extra] = @extra_id.id

Authlogic current_user - просто значение в текущем сеансе, управляемое самим стеком Rails.

0 голосов
/ 23 февраля 2017

Я согласен с Тоби, если вам не нужен этот дополнительный атрибут для объекта UserSession AuthLogic, тогда может быть проще сохранить значение в самом хеше сеанса.

Но в моем конкретном случае, а может быть и в вашем, у меня есть информация, которую я хочу получить в записи UserSession, а не в хэше сеанса, потому что я хочу получить к ней доступ в обратном вызове в модели UserSession, где "сеанс" недоступен.

Вот старая запись в блоге, описывающая, как хранить дополнительный атрибут в UserSession: http://railsblog.kieser.net/2010/03/authlogic-custom-logins-and-persisting.html

РЕДАКТИРОВАТЬ: мне не очень повезло с этим подходом сам. Чтобы сделать то, что требовало информации из хэша сеанса, я поместил эту логику в контроллер вместо модели.

AuthLogic на самом деле имеет определенные обратные вызовы, которые выполняют методы контроллера. Например, AuthLogic будет вызывать last_request_update_allowed? если ваш контроллер отвечает на это, прямо перед установкой last_request_at.

...