使用 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长度