如果是这样,它们与可能的情况有何不同?
如果不是,为什么两者都存在?为什么不两者兼而有之呢?如果您没有 :timeoutable,则会自动记住会话。如果您没有 :rememberable,那么会话会自动超时。
http://rubydoc.info/github/plataformatec/devise/master/Devise/Models/Rememberable
http://rubydoc.info/github/plataformatec/devise/master/Devise/Models/Timeoutable
超时:
last_request_at
保存在会话中,并在每次处理请求之前检查。last_sign_in_at
的请求期间完成了很多工作(用于设置 last_request_at
会话变量)。请参考装置中的可追踪挂钩,轻松追踪流量。记住我:
remember_user_token
作为 cookie 与数据库中的设计模型(用户)中的 remember_me_created_at
属性一起存储在浏览器中。 remember_me? 在每个操作之前调用,以确定是否在不登录的情况下继续。都到位:
如果您的应用程序中同时启用了超时和可记住的功能,则可记住的将覆盖超时流程。
在这里,您可以看到,仅当
sign_out
不为真时,timeout
才会在proxy.remember_me_is_active?(record)
之后发生。
就我的理解/经验而言,这并不多,我看到:
超时功能适用于打开浏览器且可能远离键盘的用户,并且出于安全原因您希望会话在几分钟内到期。
“记住我”功能适用于每天或每周返回的用户,并且您不希望他们每次都引导他们完成登录过程。这样你就可以记住它们(通常可以记住几周或几个月)。似乎没有按预期工作的是,记住我仅在完全关闭浏览器应用程序(在 Firefox 中测试)时按预期工作,如果用户仅关闭选项卡并打开新选项卡,他们不需要再次登录,即使他们要求不要被记住。
最后一个想法,我明白当使用超时时,记住是没有用的。