繁体   English   中英

Rails / Devise-闲置`x`分钟后如何注销用户?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM