我如何使用md5而不是bcrypt?

时间:2017-02-11 14:13:17

标签: laravel authentication

我需要使用md5()代替bcrypt()来存储密码。但是,当我这样做时:

protected function create(array $data)
{
    return Account::create([
        'username' => $data['username'],
        'email' => $data['email'],
        'password' => md5($data['password']),
        'datetoday' => Carbon::now(),
        'lastip' => request()->ip(),
        'confirmation' => bcrypt($data['password']),
    ]);
}

当我尝试登录时,表示凭据错误。

3 个答案:

答案 0 :(得分:6)

建议不要在bcrypt()上使用md5()。

但是,您可以手动验证用户身份。覆盖LoginController中的login()方法

  public function login(Request $request)
  {
     $user = User::where('username', $request->username)
                  ->where('password',md5($request->password))
                  ->first();
     Auth::login($user);
     return redirect('/');
  }

答案 1 :(得分:1)

您必须创建新的服务提供商。

应用程序/提供商/ md5hashprovier.php

class MD5Hasher extends BcryptHasher
{
public function check($value, $hashedValue, array $options = array())
   {
      $user = User::wherePassword(md5($value))->first();
      return $user ? true : false
    }
}

接下来,您必须创建MD5Hasher类。我建议找到它 应用程序/类/ MD5Hasher.php

\App\Providers\MD5HashProvider::class,

并将新服务提供商注册到提供者数组中的config / app.php

{{1}}

这将启用带有md5密码的身份验证

答案 2 :(得分:0)

使用MD5不再是一个好主意。

要摆脱旧的MD5记录,您可以在此处使用第二个技巧:http://john.cuppi.net/migrate-from-md5-to-bcrypt-password-hashes/