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

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

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

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

session[:authlogic_sess_name] = @extra_id.id

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

Спасибо!


person djburdick    schedule 28.01.2010    source источник


Ответы (2)


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

session[:extra] = @extra_id.id

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

person Toby Hede    schedule 28.01.2010
comment
Да, я сейчас этим занимаюсь. Думаю, я просто хотел знать, как манипулировать объектом current_user и добавлять его. Но в этом нет необходимости. - person djburdick; 28.01.2010

Я согласен с Тоби, если вам не нужен этот дополнительный атрибут для объекта 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.

person Nick Davies    schedule 22.02.2017