我是网络开发的新手。 我正在使用rails 4.2。 如果用户从浏览器(例如chrome)登录,则其会话存储在cookie中(带有remember_token变量)。 如果同一用户从其他浏览器(firefox)登录,则DB中的remember_digest(使用Bcrypt的remember_token变量的哈希值)将被覆盖,因此对其他浏览器无效。
我该如何解决这个问题? 是否可以为不同的浏览器保留相同的remember_token和remember_digest? 谢谢
答案 0 :(得分:1)
这有点问题。原因如下:
我不能说我推荐以下内容但是:
一种简单的方法是在数据库中使用多个记忆摘要。想象一下有remember_digest0和remember_digest1。在这种情况下,您可以一次支持2个浏览器(在覆盖之前)。您可以根据需要添加任意数量。
- 您需要更新您的身份验证方法,以检查保存在数据库中的每个摘要,并在任何匹配时执行操作。 - 你需要调整保存摘要的方法。您需要检查哪一个为空或最旧,然后将新摘要保存到该空/最旧。
由于Cookie的性质及其安全隐患,这可能是唯一安全的方法。即便如此,我认为这不值得。