【问题标题】:Rails/Devise - Determining when user session will expireRails/Devise - 确定用户会话何时到期
【发布时间】:2013-05-22 00:54:18
【问题描述】:

当使用 timeoutable 模块进行 Devise 时,如何确定当前用户的会话将过期多长时间?目标是在所有响应中包含此值,以便客户端脚本可以使用它。我收集到 Devise 在内部使用 Warden 进行身份验证,但我还没有找到任何解释如何将会话过期时间拉出 Warden 深度的内容。

【问题讨论】:

    标签: ruby-on-rails devise warden


    【解决方案1】:

    这是你的做法:

    class User < ActiveRecord::Base
      devise :authenticatable, :timeoutable, :validatable, :timeout_in => 20.minutes
    end
    

    【讨论】:

    • 我知道,但你的帖子让我意识到这实际上是答案。谢谢!
    • 如果我希望 1 个用户有不同的超时时间,而另一个用户有不同的超时时间怎么办?
    【解决方案2】:

    看起来你可以像 Benjamin Tan 说的那样把它放在模型中,或者你可以把它放在 config/initializers/devise.rb

    # ==> Configuration for :timeoutable
    # The time you want to timeout the user session without activity. After this
    # time the user will be asked for credentials again. Default is 30 minutes.
    # config.timeout_in = 30.minutes
    

    查看这个 StackOverflow 问题:Setting session length with Devise

    【讨论】:

      【解决方案3】:

      对于 Rails 4:

      config/initializers/devise.rb

        if Rails.env.production?
          config.timeout_in = 30.minutes
        else
          config.timeout_in = 7.days
        end
      

      user.rb

      class User < ActiveRecord::Base
        devise :timeoutable
      end
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-07-24
        • 2020-08-22
        • 2012-10-31
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-07-03
        相关资源
        最近更新 更多