繁体   English   中英

如何在 Laravel Auth 登录检查中更改为 bcrypt 而不是 md5

[英]How can I change to bcrypt instead of md5 in Laravel Auth login check

我正在使用 Hesto/multi-auth

创建新的身份验证模块后,我能够注册用户,但是当我尝试使用相同的凭据登录时,登录尝试失败。 所以我更新了RegisterController.php->create()方法并将密码加密从默认的bcrypt更改为md5 (同时存储它)。然后我通过注册创建了另一个用户,然后登录成功。

所以要理解这个问题:我的 Laravel 版本是在登录/检查密码时使用 md5 加密比较“密码”。 但我想继续使用bcrypt来注册和登录(在两个用例中)。 我应该如何更改登录方法以使用bcrypt而不是md5

我的 Laravel 版本:5.5.28

protected function create(array $data)
{
    return Shopowner::create([
        'name' => $data['name'],
        'email' => $data['email'],
        //'password' => bcrypt($data['password']),
        'password' => md5($data['password']),
    ]);
}

我的laravel版本在登录/检查密码时使用md5加密来比较“密码”。 但是我想继续使用bcrypt进行注册和登录(在两个用例中)。

在您的config/hashing.php文件中,将驱动程序更改为bcrypt

我应该如何更改登录方法以使用bcrypt而不是md5?

在您的RegisterController ,使用Hash::make($data['password']); 而不是bcryptmd5函数,以确保使用驱动程序对密码进行哈希处理

解:

尽管它似乎不是本地的laravel代码。 但是有人改变了它的核心,使其可以使用md5而不是bcrypt

\\vendor\\laravel\\framework\\src\\Illuminate\\Auth\\EloquentUserProvider.php [###]中,该行已被注释掉,并添加了新的if块以与md5

/**
 * Validate a user against the given credentials.
 *
 * @param  \Illuminate\Contracts\Auth\Authenticatable  $user
 * @param  array  $credentials
 * @return bool
 */
public function validateCredentials(UserContract $user, array $credentials)
{
    $plain = $credentials['password'];

    /* MD5:: This block is custom and added to work with md5 */
    /* ======================== */
    if(md5($plain) == $user->getAuthPassword())
    {
        return true;
    }
    else{
        return false;
    }
    /* ======================== */

   /* Bcrypt:: This line is proper to work with default bcrypt */
   //### return $this->hasher->check($plain, $user->getAuthPassword());
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM