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