使用 Devise 设置会话长度

Posted

技术标签:

【中文标题】使用 Devise 设置会话长度【英文标题】:Setting session length with Devise 【发布时间】:2011-06-19 12:47:08 【问题描述】:

我的会话在 1-3 小时不使用后超时(不知道具体多长时间)。我该如何调整?

我查看了文档,似乎找不到此设置。

【问题讨论】:

【参考方案1】:

查看 config/initializers/devise.rb。有很多配置设置,包括config.timeout_in。我的版本中的默认值为 30 分钟。您也可以在模型本身上设置它:

class User < ActiveRecord::Base
  devise :timeoutable, :timeout_in => 15.minutes

您现在也可以set the timeout dynamically。

【讨论】:

例如将其设置为 2 周是否安全?【参考方案2】:

使用 Rails4,更好的做法是:

在 models/user.rb 中:将 :timeoutable 添加到现有的设计模块列表中。

class User < ActiveRecord::Base
  devise :timeoutable
end

在config/initializers/devise.rb中:设置超时参数。

Devise.setup do |config|
  config.timeout_in = 3.hours
end

【讨论】:

【参考方案3】:

全球:

class User < ActiveRecord::Base
  devise (...), :timeoutable
end

Devise.setup do |config|
  config.timeout_in = 3.hours
end

也可以动态设置 timeout_in 选项

class User < ActiveRecord::Base
  devise (...), :timeoutable

  def timeout_in
    if self.admin? 
      1.year
    else
      2.days
    end
  end
end

【讨论】:

是的!除非你想扭转那里的时代。最好让具有更多权限的用户更频繁地进行身份验证...

以上是关于使用 Devise 设置会话长度的主要内容,如果未能解决你的问题,请参考以下文章

php中session_id()函数详细介绍,会话id生成过程及session id长度

Rails/Devise 会话中的warden 数据由啥组成?

PHP如何在开始会话之前计算会话ID的长度

如何计算 Firebase 原始数据中的会话长度和会话数?

使用devise登录后过滤路线

如何在 Devise 中手动创建新用户和用户会话?