当使用Laravel的默认auth脚手架时,在注册时,密码会在创建函数下的RegisterController.php中使用bcrypt进行哈希处理
protected function create(array $data)
{
return User::create([
'name' => $data['name'],
'email' => $data['email'],
'password' => bcrypt($data['password']),
]);
}
我想知道在登录时哈希用户输入密码的函数在哪里?它必须是在供应商文件夹内 Build 的某个地方,但我找不到它 .
因此,当用户想要登录时,他输入明文密码,然后使用bcrypt再次对该纯文本进行哈希处理,然后将其与DB中的已保存和哈希密码进行比较 . 但是拉拉维尔在哪里做到了这一点?在哪个功能?
2 回答
Laravel never decrypts your password
Laravel
中的Bcrypt密码永远不会被解密,用户输入的密码只会与存储在数据库中的已经散列的密码进行比较 .更新:
如果您使用Eloquents用户模型进行身份验证;
vendor / laravel / framework / src / Illuminate / Auth / EloquentUserProvider.php
如果您正在验证数据库驱动程序;
vendor / laravel / framework // src / Illuminate / Auth / DatabaseUserProvider.php
bcrypt
是将其转换为哈希的函数 . 它是一种单向哈希算法,无法解密 . 用户以纯文本格式发送的密码,使用bcrypt
进行转换,然后在db中进行比较 .