php - 将 password_hash 更改为 bcrypt
问题描述
我拿了一个旧项目并开始使用 Laravel 再次开发它,但我正在为已经在数据库中注册的用户苦苦挣扎。
我相信他们用
password_hash(' ', PASSWORD_DEFAULT) 方法
但我认为 Laravel 使用
加密()
所以我无法使用这些凭据登录。有什么办法可以更改加密吗?
我不想要求用户更改密码或任何东西
解决方案
阅读非常精细的手册揭示 PASSWORD_BCRYPT
方法:
password_hash("thepassword", PASSWORD_BCRYPT);
如果他们有一个现有的密码,您可以使用它password_verify()
来确认密码,无论它是如何散列的。
您可以将用户的密码哈希转换为新密码,但仅限于他们登录时。您将需要添加另一列来保存新密码,然后当他们登录时,检查现有密码(如果可能,请验证)和新列中的空白密码。如果新列不为空,请与 比较password_verify()
。如果为空,则使用显示的方法散列新密码。
最终,每个人都会在登录时更改他们的哈希方法,但是您需要做一些工作才能使代码形状足够安全可靠地执行转换。
推荐阅读
- matlab - 简化代码以在matlab中展平数组
- javascript - 创建运行时如何调用类元素?
- gatsby - 向非身份验证端点提供登录体验时静态渲染的限制
- python-3.x - 如何使用 python turtle 绘制单词
- tensorflow - 如果省略了 input_shape,Keras 模型的结构是什么?为什么它的性能更好?
- vue.js - 如何获取一个数组中的所有记录名称?
- raspberry-pi - MQTT+Openhab:命令行有效,但 Mqtt-Binding 无效
- unity3d - 为什么这会给我一个错误,在类、结构或接口成员声明中说意外符号“1”
- docker - 如何从 docker 容器连接到另一个容器中的已发布端口
- python - 仅当值不是特定值时按值过滤数据帧