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

时间:2017-04-12 04:31:36

标签: ruby-on-rails devise

如果是这样,那么它们有多么不同呢?

如果没有,为什么两者都存在?为什么不拥有一个没有另一个?如果您没有:timeoutable,则自动记住会话。如果您没有:可记住,则会话自动超时。

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

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

2 个答案:

答案 0 :(得分:0)

对于我的理解/经验,这并不多,我看到了:

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

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

作为最后的想法,我理解当使用超时时,记住是没有用的。

答案 1 :(得分:0)

超时:

    基于{li> Session last_request_at被保存在会话中,并在处理请求之前进行了很长时间的检查。
  • 在请求设置用户模型中的last_sign_in_at(用于设置last_request_at会话变量)期间,有很多工作要做。请参考设计中的trackable钩子,该流程易于跟踪。

记住我:

    基于{li> Cookie remember_user_token与cookie的remember_me_created_at属性一起存储在浏览器中,作为cookie在您的数据库中。 remember_me?在每个操作之前都会被调用,以确定是否继续而不登录。

都在适当位置:

如果在应用程序中同时启用了超时和可记忆性,则可记忆性将覆盖超时流程。

Here,您可以看到sign_out仅在timeout不正确的情况下发生在proxy.remember_me_is_active?(record)之后。