注册新用户时,我在App/Service/Regitrar.php中更改了方法:
public function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => sha1($data['password']), // default is bcrypt
]);
}
它运行良好。当我注册新用户时,我的密码12345678
被散列为7c222fb2927d828af22f592134e8932480637c0d
,
但是,当我登录时,我遇到了问题,并且确定它不能与oauth2.一起使用
请帮帮我,我是Laravel 5的新手。
不推荐-您可以使用类似问题中的解决方案更改哈希。这是给拉拉威尔4号的。但同样的原则也应该适用。不过我不确定。然而,建议使用bcrypt,因为它比SHA1 安全得多
更好的解决方案将当前SHA1哈希迁移到bcrypt。迁移策略可以有以下步骤
- 在表中添加一个新列,将其命名为
password_new
/您喜欢的其他列 - 当用户登录时,您拥有真实的密码。检查
password_new
字段中提交的密码的bcrypt哈希。如果未设置该值,则回退到SHA1检查。如果密码与SHA1散列匹配,则将真实密码散列到bcrypt,并将其保存在password_new
列中。然后恢复当前登录流程。如果没有,则显示登录错误消息 - 清除所有用户会话
- 当所有用户都迁移到brcypt时,删除当前
password
存储列,并将password_new
重命名为password
- 从应用程序逻辑中删除对SHA1的检查
注意:步骤3、4、5是可选的,但建议用于防止长期腹胀。