ruby on rails上的Cookie - 使用不同的浏览器登录

时间:2015-05-13 17:24:45

标签: ruby-on-rails ruby cookies

我是网络开发的新手。 我正在使用rails 4.2。 如果用户从浏览器(例如chrome)登录,则其会话存储在cookie中(带有remember_token变量)。 如果同一用户从其他浏览器(firefox)登录,则DB中的remember_digest(使用Bcrypt的remember_token变量的哈希值)将被覆盖,因此对其他浏览器无效。

我该如何解决这个问题? 是否可以为不同的浏览器保留相同的remember_token和remember_digest? 谢谢

1 个答案:

答案 0 :(得分:1)

这有点问题。原因如下:

  1. Cookie已取决于浏览器,您已经知道了。
  2. 能够重新创建摘要(通过创建符合您需要的方法)是不安全的。它违背了使用记忆摘要的全部目的。
  3. 我不能说我推荐以下内容但是:

    一种简单的方法是在数据库中使用多个记忆摘要。想象一下有remember_digest0和remember_digest1。在这种情况下,您可以一次支持2个浏览器(在覆盖之前)。您可以根据需要添加任意数量。

    - 您需要更新您的身份验证方法,以检查保存在数据库中的每个摘要,并在任何匹配时执行操作。 - 你需要调整保存摘要的方法。您需要检查哪一个为空或最旧,然后将新摘要保存到该空/最旧。

    由于Cookie的性质及其安全隐患,这可能是唯一安全的方法。即便如此,我认为这不值得。