更改数据库结构和迁移密码哈希

时间:2014-10-14 15:49:05

标签: ruby-on-rails database-design bcrypt

我目前有一个网站(Rails 4.1,ActiveRecord,Postgres),访问者可以登录其中一个模型 - 例如,访问者可以创建一个帐户或以User登录,{{1这些模型中的每一个都有一个Artist列(使用password_digestbcrypt)。

现在我们希望将网站移至统一登录系统 - 每个人都创建并以has_secure_password身份登录,User可以属于User和其他模型我们有。

我认为直接使用Artist表中的password_digest列是有意义的,而不是查看所有现有模型。这意味着我们必须在User表中创建新条目,并将User复制到其中。

这可以安全地完成,并且每个人都可以使用他们已有的密码登录吗?我已尝试在Rails控制台中使用password_digest进行游戏(复制摘要)已知密码并将其分配给其他条目)它似乎正确验证...这样做有什么缺点吗?

1 个答案:

答案 0 :(得分:3)

密码没有唯一性约束(我假设),因此不同用户帐户之间的密码是相同的(在结果表中,所有Artist等记录都被复制)并不重要。将数据从一个表/列复制到另一个表/列没有安全问题:password_digest值没有什么神奇之处,它只是一个文本字符串。只要您继续使用相同的加密方法,您生成的用于登录测试的加密密码仍应与保存的值匹配。

但是,如果用户名必须是唯一的,则可能会遇到问题:如果您有现有用户且现有艺术家具有相同的用户名,会出现什么情况?他们中的一个会不得不改变吗?