加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 20:41:02 所属栏目:百科 来源:网络整理
导读:我正在使用Devise进行身份验证在Rails中修改网站.以前的网站使用的是具有md5密码的用户数据库,因此我想将这个密码迁移到Devise使用的加密.我该如何解决? 解决方法 Oleksi和josnidhin在回答你的问题上做了很好的工作.我只想在过渡阶段添加一些想法: 将数据
我正在使用Devise进行身份验证在Rails中修改网站.以前的网站使用的是具有md5密码的用户数据库,因此我想将这个密码迁移到Devise使用的加密.我该如何解决?

解决方法

Oleksi和josnidhin在回答你的问题上做了很好的工作.我只想在过渡阶段添加一些想法:

将数据库迁移到具有两个“密码散列”列,一列包含现有的旧MD5散列,另一个用于新的bcrypt散列,最初全部填充为NULL.下次用户登录时,请执行以下步骤:

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

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

3)使用brypt值验证用户.只需忽略MD5值.

然后不时检查新的bcrypt列是否已填充.如果是这样,请丢弃MD5列,并更新您的应用程序,只使用新的机制.

但是,这是一厢情愿的想法,总是有一些用户还没有登录.给他们发一封邮件,告诉他们你在做什么,这是最好的,并请他们尽快登录.

几周后,再次检查bcrypt状态.如果仍然有一些密码丢失(将会有:)),您可以做的仅仅是重置这些用户的密码,生成一个随机的密码,并通过邮件通知他们,就像忘记密码一样,会做什么.

然后,您可以终止清理MD5列,丢弃相应的代码,并升级您的应用程序,只使用新的身份验证.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读