首页 > 解决方案 > 将 password_hash 更改为 bcrypt

问题描述

我拿了一个旧项目并开始使用 Laravel 再次开发它,但我正在为已经在数据库中注册的用户苦苦挣扎。

我相信他们用

password_hash(' ', PASSWORD_DEFAULT) 方法

但我认为 Laravel 使用

加密()

所以我无法使用这些凭据登录。有什么办法可以更改加密吗?

我不想要求用户更改密码或任何东西

标签: phplaravelencryptionpasswordslaravel-5.6

解决方案


阅读非常精细的手册揭示 PASSWORD_BCRYPT方法:

password_hash("thepassword", PASSWORD_BCRYPT);

如果他们有一个现有的密码,您可以使用它password_verify()来确认密码,无论它是如何散列的。


您可以将用户的密码哈希转换为新密码,但仅限于他们登录时。您将需要添加另一列来保存新密码,然后当他们登录时,检查现有密码(如果可能,请验证)和新列中的空白密码。如果新列不为空,请与 比较password_verify()。如果为空,则使用显示的方法散列新密码。

最终,每个人​​都会在登录时更改他们的哈希方法,但是您需要做一些工作才能使代码形状足够安全可靠地执行转换。


推荐阅读