Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails:如果用户从多个浏览器登录,如何持久地记住他?_Ruby On Rails_Ruby On Rails 4_Remember Me - Fatal编程技术网

Ruby on rails Rails:如果用户从多个浏览器登录,如何持久地记住他?

Ruby on rails Rails:如果用户从多个浏览器登录,如何持久地记住他?,ruby-on-rails,ruby-on-rails-4,remember-me,Ruby On Rails,Ruby On Rails 4,Remember Me,我持久记住用户的实现如下(我不使用任何gem进行身份验证): 用户从Firefox登录,提供凭据并选择“记住我”选项 对用户进行身份验证,并创建一个memory_令牌并将其放入cookies哈希中。用户表中保存了与记住标记相对应的记住标记摘要。用户退出Firefox 用户只需从Chrome上执行步骤1 执行步骤2不幸的是,数据库中现有的记忆摘要现在被一个新值覆盖。 用户再次启动Firefox但是Rails无法将Firefox发送的记住标记与记住摘要匹配。 我能做些什么来避开这件事?我是否

我持久记住用户的实现如下(我不使用任何gem进行身份验证):

  • 用户从Firefox登录,提供凭据并选择“记住我”选项

  • 对用户进行身份验证,并创建一个memory_令牌并将其放入cookies哈希中。用户表中保存了与记住标记相对应的记住标记摘要。用户退出Firefox

  • 用户只需从Chrome上执行步骤1

  • 执行步骤2不幸的是,数据库中现有的记忆摘要现在被一个新值覆盖。

  • 用户再次启动Firefox但是Rails无法将Firefox发送的记住标记与记住摘要匹配。

    我能做些什么来避开这件事?我是否需要维护多个摘要列?如果有,有多少?或者,这样做值得吗


  • 您可以尝试使用

    将记忆令牌以数组的形式保存在数据库中。我认为这将解决您的问题。我还建议在您的模型中实现一个用户
    拥有的关系:记住\u digests
    。您还可以将浏览器存储到该型号,这样用户就可以了解其登录的浏览器。您的应用程序中是否有会话控制器?@Valerie Yes,我有一个会话控制器,负责创建一个新的会话。@23tux您是否建议:记住,摘要应该存储在一个单独的表中,而不是存储在用户表中?