[英]Change password_hash to bcrypt
我接受了一个旧项目,并开始与Laravel再次进行开发,但是我正在为已经在数据库中注册的使用权用户苦苦挣扎。
我相信他们使用
password_hash('',PASSWORD_DEFAULT)方法
但我认为Laravel使用
Bcrypt()
因此,我无法使用这些凭据登录。 有什么办法可以更改加密?
我不想让用户更改密码或其他任何内容
阅读非常好的手册将揭示 PASSWORD_BCRYPT
方法:
password_hash("thepassword", PASSWORD_BCRYPT);
如果他们已有密码,则可以使用password_verify()
确认密码,而不管密码如何进行哈希处理。
您可以将用户的密码哈希转换为新的密码哈希,但只能在用户登录时进行。 您将需要添加另一列以保存新密码,然后在他们登录时检查现有密码(如果可能,请进行验证),并在新列中输入空白。 如果新列不为空,则将其与password_verify()
进行比较。 如果为空,请使用所示方法对新密码进行哈希处理。
最终,每个人都将在登录时更改其哈希方法,但是您将需要做一些工作才能使代码具有足够的形状,从而可以安全可靠地执行转换。
Laravel使用bcrypt散列,与password_hash使用PASSWORD_BCRYPT或PASSWORD_DEFAULT算法使用的散列相同。
因此,哈希值已经与Laravel兼容。 使用修补匠可以很容易地验证这一点:
> $hash = password_hash('test', PASSWORD_DEFAULT);
"$2y$10$OpnZSN0EbAzMCvywTAWyWOqOme6/3N/xe.nrpcUO6mhLumMxL6DYm"
> Hash::check('test', $hash);
true
Laravel还允许您通过绑定到ioc容器轻松地插入自己的Hasher接口实现。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.