【问题标题】:without using devise gem,automatic logout after x minutes in ruby不使用设计 gem,在 ruby​​ 中 x 分钟后自动注销
【发布时间】:2020-04-28 19:26:32
【问题描述】:

我没有使用 devise gem 进行登录身份验证,如果用户处于非活动/空闲状态几分钟,我想实现自动注销功能。这个怎么做 请帮帮我。

【问题讨论】:

标签: ruby-on-rails ruby


【解决方案1】:

使用设计

在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 分钟后过期。而且由于您将在会话中存储用户的登录信息,因此数据将被删除。所以之后用户将被注销。

【讨论】:

  • s 我们可以做到这一点.. 如果我不使用 devise gem 进行登录身份验证,那么我怎么能做到这一点
【解决方案2】:

在会话中为每个用户保留少量数据记录将是适用的。 例如:

{
  user_id: 1000,
  timestamp: 1588061624
}

在用户登录后在会话中设置此类信息。然后在每个请求上,首先检查会话中的最后一次触摸数据是否与所需的超时时间相比不够老。您可以使用 session timestamp + timeout period > current timestamp 之类的东西来验证会话。

如果会话仍然有效,则将时间戳更新为当前值。否则,删除用户会话并将其注销。

【讨论】:

    猜你喜欢
    • 2011-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-11
    • 1970-01-01
    • 1970-01-01
    • 2018-02-05
    相关资源
    最近更新 更多