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