【发布时间】:2017-02-24 07:20:13
【问题描述】:
我正在使用 Authlogic 对用户进行身份验证。
我了解如何创建和使用会话,但想在 authlogic 创建的 current_user 会话中存储一个额外的 id 变量。
我可以这样做吗:
session[:authlogic_sess_name] = @extra_id.id
但是,我不确定 authlogic 会话的名称是什么或如何访问它。
谢谢!
【问题讨论】:
我正在使用 Authlogic 对用户进行身份验证。
我了解如何创建和使用会话,但想在 authlogic 创建的 current_user 会话中存储一个额外的 id 变量。
我可以这样做吗:
session[:authlogic_sess_name] = @extra_id.id
但是,我不确定 authlogic 会话的名称是什么或如何访问它。
谢谢!
【问题讨论】:
您为什么不将值存储在会话中?
session[:extra] = @extra_id.id
Authlogic current_user 只是当前会话中的一个值,由 Rails 堆栈本身管理。
【讨论】:
我同意 Toby 的观点,如果您不需要在 AuthLogic 的 UserSession 对象上添加这个附加属性,那么将值存储在会话哈希本身中可能会更简单。
但在我的具体情况下,也许在你的情况下,我有我想要的关于 UserSession 记录而不是会话哈希的信息,因为我想在 UserSession 模型中的回调中访问它,其中“会话”不可用。
这是一篇较早的博客文章,描述了如何在 UserSession 上存储附加属性: http://railsblog.kieser.net/2010/03/authlogic-custom-logins-and-persisting.html
编辑:我自己对这种方法不太走运。为了做需要来自会话哈希的信息的事情,我将该逻辑放在控制器而不是模型中。
AuthLogic 实际上具有执行控制器方法的某些回调。例如,AuthLogic 会调用 last_request_update_allowed?如果您的控制器对此做出响应,则在设置 last_request_at 之前。
【讨论】: