Laravel登录流程

时间:2016-10-13 08:14:27

标签: laravel login

当使用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中的已保存和哈希密码进行比较。但是拉拉维尔在哪里做到这一点?在哪个功能?

2 个答案:

答案 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中进行比较。