![](/img/trans.png)
[英]without using devise gem,automatic logout after x minutes in ruby
[英]Rails/Devise - how to logout a user after an `x` minutes of inactivity?
我正在开发一个包含许多角色的系统,其中一个角色是ADMIN
,它可以访问系统的关键部分,我想限制用户的会话,当他/她在一段时间内不与系统交互时,它的会话到期,下次他/她应该再次登录时,该怎么办?
Devise有一个可以使用的超时模块。
在您的User
模型中,您将在devise
模型中包括:timeoutable
,在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
。
编辑:我的第一个答案类似于下面线程中的第一个答案,但是该线程中的第二个答案可能更合适。 由于它直接与session_store一起使用。
这是一个有用的StackOverflow链接,可以提供额外的信息: Rails 4:会话到期?
本文档包含有关可用于会话操作的方法的一些信息: http : //api.rubyonrails.org/classes/ActionDispatch/Session/CookieStore.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.