gpt4 book ai didi

ruby-on-rails-3 - 将旧的 md5 密码迁移到 bcrypt 密码

转载 作者:行者123 更新时间:2023-12-02 11:36:39 40 4
gpt4 key购买 nike

我正在使用 Devise 进行身份验证,在 Rails 中重新设计一个网站。之前的网站使用具有 md5 密码的用户数据库,因此我想将此密码迁移到 Devise 使用的加密。怎么解决?

最佳答案

Oleksi 和 josnidhin 很好地回答了您的问题。我只是想添加一些在过渡阶段应该做什么的想法:

将数据库迁移到拥有两个“密码哈希”列,其中一列包含现有的旧 MD5 哈希值,另一列包含新的 bcrypt 哈希值,最初全部填充 NULL。下次用户登录时,您将执行以下步骤:

1) 检查 bcrypt 列中是否已有值。如果是,则继续 3.,否则继续 2.

2) 使用旧的 MD5 机制,使用 MD5 列中的值对用户进行身份验证。如果成功,另外计算新的 bcrypt 哈希并将其存储在新列中。完毕。

3) 使用 brypt 值对用户进行身份验证。只需忽略 MD5 值即可。

然后时不时的检查一下新的bcrypt列是否被填满。如果是这样,请丢弃 MD5 列并更新您的应用以仅使用新机制。

但这只是一厢情愿,总有一些用户在此期间没有登录。向他们发送一封邮件,告诉他们您在做什么,这是为了他们最好,并请他们尽快登录。

几周后,再次检查 bcrypt 状态。如果仍然缺少一些密码(会有:)),您可以做的就是重置这些用户的密码,生成一个随 secret 码并通过邮件通知他们,就像如果他们忘记密码时您会做的那样。

然后,您最终可以清除 MD5 列,丢弃相应的代码并升级您的应用程序以仅使用新的身份验证。

关于ruby-on-rails-3 - 将旧的 md5 密码迁移到 bcrypt 密码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10771198/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com