你可以同时使用 Devise :timeoutable 和 :rememberable 吗?

问题描述 投票:0回答:2

如果是这样,它们与可能的情况有何不同?

如果不是,为什么两者都存在?为什么不两者兼而有之呢?如果您没有 :timeoutable,则会自动记住会话。如果您没有 :rememberable,那么会话会自动超时。

http://rubydoc.info/github/plataformatec/devise/master/Devise/Models/Rememberable

http://rubydoc.info/github/plataformatec/devise/master/Devise/Models/Timeoutable

ruby-on-rails devise
2个回答
5
投票

超时:

    基于
  • Session
    last_request_at
    保存在会话中,并在每次处理请求之前检查。
  • 在用户模型中设置
    last_sign_in_at
    的请求期间完成了很多工作(用于设置
    last_request_at
    会话变量)。请参考装置中的可追踪挂钩,轻松追踪流量。

记住我:

    基于
  • Cookie
    remember_user_token
    作为 cookie 与数据库中的设计模型(用户)中的
    remember_me_created_at
    属性一起存储在浏览器中。 remember_me? 在每个操作之前调用,以确定是否在不登录的情况下继续。

都到位:

如果您的应用程序中同时启用了超时和可记住的功能,则可记住的将覆盖超时流程。

在这里,您可以看到,仅当

sign_out
不为真时,
timeout
才会在
proxy.remember_me_is_active?(record)
之后发生。


0
投票

就我的理解/经验而言,这并不多,我看到:

超时功能适用于打开浏览器且可能远离键盘的用户,并且出于安全原因您希望会话在几分钟内到期。

“记住我”功能适用于每天或每周返回的用户,并且您不希望他们每次都引导他们完成登录过程。这样你就可以记住它们(通常可以记住几周或几个月)。似乎没有按预期工作的是,记住我仅在完全关闭浏览器应用程序(在 Firefox 中测试)时按预期工作,如果用户仅关闭选项卡并打开新选项卡,他们不需要再次登录,即使他们要求不要被记住。

最后一个想法,我明白当使用超时时,记住是没有用的。

© www.soinside.com 2019 - 2024. All rights reserved.