我目前有一个网站(Rails 4.1,ActiveRecord,Postgres),访问者可以登录其中一个模型 - 例如,访问者可以创建一个帐户或以User
登录,{{1这些模型中的每一个都有一个Artist
列(使用password_digest
和bcrypt
)。
现在我们希望将网站移至统一登录系统 - 每个人都创建并以has_secure_password
身份登录,User
可以属于User
和其他模型我们有。
我认为直接使用Artist
表中的password_digest
列是有意义的,而不是查看所有现有模型。这意味着我们必须在User
表中创建新条目,并将User
复制到其中。
这可以安全地完成,并且每个人都可以使用他们已有的密码登录吗?我已尝试在Rails控制台中使用password_digest
进行游戏(复制摘要)已知密码并将其分配给其他条目)它似乎正确验证...这样做有什么缺点吗?
答案 0 :(得分:3)
密码没有唯一性约束(我假设),因此不同用户帐户之间的密码是相同的(在结果表中,所有Artist等记录都被复制)并不重要。将数据从一个表/列复制到另一个表/列没有安全问题:password_digest
值没有什么神奇之处,它只是一个文本字符串。只要您继续使用相同的加密方法,您生成的用于登录测试的加密密码仍应与保存的值匹配。
但是,如果用户名必须是唯一的,则可能会遇到问题:如果您有现有用户且现有艺术家具有相同的用户名,会出现什么情况?他们中的一个会不得不改变吗?