首页 文章

Laravel登录流程

提问于
浏览
1

当使用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 回答

  • 2

    Laravel never decrypts your password

    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());
    }
    
  • 0

    bcrypt 是将其转换为哈希的函数 . 它是一种单向哈希算法,无法解密 . 用户以纯文本格式发送的密码,使用 bcrypt 进行转换,然后在db中进行比较 .

相关问题