我正在开发一个包含许多角色的系统,其中一个角色是ADMIN
,可以访问系统的关键部分,我想限制用户的会话,当他/她不在时# 39;与系统交互一段时间,其会话到期,下次他/她应该再次登录,我该怎么做?
答案 0 :(得分:7)
Devise有一个timeoutable模块供您使用。
在User
模型中,您将:timeoutable
包含devise
模型,并在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 = ENV['YOUR_TIME'].to_i.minutes
如果您希望对用户类型更加灵活,可以为User
模型添加类似的方法:
def timeout_in
if self.type == 'Admin'
45.minutes
else
60.minutes
end
end
这将用于代替在初始值设定项中设置timeout_in
。
答案 1 :(得分:1)
编辑:我的第一个回复类似于下面帖子中的第一个回答,但该帖子中的第二个回答可能更合适。因为它直接与session_store一起工作。
这是一个有用的StackOverflow链接,可以提供额外的信息:Rails 4: Session Expiry?
本文档提供了有关会话操作可用方法的一些信息:http://api.rubyonrails.org/classes/ActionDispatch/Session/CookieStore.html