【发布时间】:2020-04-28 19:26:32
【问题描述】:
我没有使用 devise gem 进行登录身份验证,如果用户处于非活动/空闲状态几分钟,我想实现自动注销功能。这个怎么做 请帮帮我。
【问题讨论】:
-
这能回答你的问题吗? How to configure time out using devise?
标签: ruby-on-rails ruby
我没有使用 devise gem 进行登录身份验证,如果用户处于非活动/空闲状态几分钟,我想实现自动注销功能。这个怎么做 请帮帮我。
【问题讨论】:
标签: ruby-on-rails ruby
使用设计
在rails中,您可以在设计初始化文件config>initializers>devise.rb中找到一个选项
config.timeout_in = 20.minutes
您可以在此处指定用户会话过期的限制。在上述情况下,它将在 20 分钟后过期,并且将再次要求用户提供凭据。
没有设计
您可以简单地使来自config>initializers>session_store.rb 的用户会话过期
Rails.application.config.session_store :cookie_store, expire_after: 30.minutes
因此所有会话数据将在 30 分钟后过期。而且由于您将在会话中存储用户的登录信息,因此数据将被删除。所以之后用户将被注销。
【讨论】:
在会话中为每个用户保留少量数据记录将是适用的。 例如:
{
user_id: 1000,
timestamp: 1588061624
}
在用户登录后在会话中设置此类信息。然后在每个请求上,首先检查会话中的最后一次触摸数据是否与所需的超时时间相比不够老。您可以使用 session timestamp + timeout period > current timestamp 之类的东西来验证会话。
如果会话仍然有效,则将时间戳更新为当前值。否则,删除用户会话并将其注销。
【讨论】: