【问题标题】:Ruby on Rails: how can I store additional data in the session for authlogicRuby on Rails:如何在 authlogic 的会话中存储其他数据
【发布时间】:2017-02-24 07:20:13
【问题描述】:

我正在使用 Authlogic 对用户进行身份验证。

我了解如何创建和使用会话,但想在 authlogic 创建的 current_user 会话中存储一个额外的 id 变量。

我可以这样做吗:

session[:authlogic_sess_name] = @extra_id.id

但是,我不确定 authlogic 会话的名称是什么或如何访问它。

谢谢!

【问题讨论】:

    标签: ruby-on-rails authlogic


    【解决方案1】:

    您为什么不将值存储在会话中?

    session[:extra] = @extra_id.id
    

    Authlogic current_user 只是当前会话中的一个值,由 Rails 堆栈本身管理。

    【讨论】:

    • 是的,我现在正在这样做。我想我只是想知道如何操作并向 current_user 对象添加东西。但这不是必需的。
    【解决方案2】:

    我同意 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 之前。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-24
      • 1970-01-01
      • 1970-01-01
      • 2014-03-30
      相关资源
      最近更新 更多