Laravel 如何使用md5而不是bcrypt?

Laravel 如何使用md5而不是bcrypt?,laravel,authentication,Laravel,Authentication,我需要使用md5而不是bcrypt来存储密码。但当我这么做的时候: protected function create(array $data) { return Account::create([ 'username' => $data['username'], 'email' => $data['email'], 'password' => md5($data['password']), 'dateto

我需要使用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']),
    ]);
}
当我尝试登录时,它会说凭据错误。

不建议在bcrypt上使用md5

但是,您可以手动对用户进行身份验证。LoginController中的重写方法

  public function login(Request $request)
  {
     $user = User::where('username', $request->username)
                  ->where('password',md5($request->password))
                  ->first();
     Auth::login($user);
     return redirect('/');
  }
不建议在bcrypt上使用md5

但是,您可以手动对用户进行身份验证。LoginController中的重写方法

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

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

app/providers/md5hashprovider.php

namespace App\Providers;
class MD5HashProvider extends \Illuminate\Hashing\HashServiceProvider
{
    public function boot()
    {
    \App::bind('hash', function () {
        return new \App\Classes\MD5Hasher;
    });
}}
接下来,您必须创建MD5Hasher类。我建议把它定位在 app/classes/MD5Hasher.php

class MD5Hasher extends BcryptHasher
{
public function check($value, $hashedValue, array $options = array())
   {
      $user = User::wherePassword(md5($value))->first();
      return $user ? true : false
    }
}
并将您的新服务提供商注册到providers数组中的config/app.php

\App\Providers\MD5HashProvider::class,

这将启用带有md5密码的身份验证,您必须创建新的服务提供商

app/providers/md5hashprovider.php

namespace App\Providers;
class MD5HashProvider extends \Illuminate\Hashing\HashServiceProvider
{
    public function boot()
    {
    \App::bind('hash', function () {
        return new \App\Classes\MD5Hasher;
    });
}}
接下来,您必须创建MD5Hasher类。我建议把它定位在 app/classes/MD5Hasher.php

class MD5Hasher extends BcryptHasher
{
public function check($value, $hashedValue, array $options = array())
   {
      $user = User::wherePassword(md5($value))->first();
      return $user ? true : false
    }
}
并将您的新服务提供商注册到providers数组中的config/app.php

\App\Providers\MD5HashProvider::class,

这将使用md5密码启用身份验证

使用md5不再是一个好主意


要清除旧的MD5记录,您可以在这里使用第二个技巧:

使用MD5不再是一个好主意



要清除旧的MD5记录,您可以在此处使用第二个技巧:

虽然使用MD5散列密码是一个非常糟糕的主意,但您需要使用相同的方法来解密和加密您在确认中仍然拥有bcrypt的密码。为什么需要这样做?md5的安全性较低。否决票的原因是什么?我别无选择,只能使用md5使其工作。更安全的方法是使用bcrypt进行您自己的登录,当用户登录时,将密码的md5哈希暂时保存在内存中。这样,您仍然可以在需要时使用MD5,但可以安全地存储密码。@SinanSamet这真的值得压缩用户的安全性吗?虽然使用MD5散列密码是一个可怕的想法,但您需要使用相同的方法来解密和加密您在确认中仍然拥有的bcrypt密码。为什么需要这样做?md5的安全性较低。否决票的原因是什么?我别无选择,只能使用md5使其工作。更安全的方法是使用bcrypt进行您自己的登录,当用户登录时,将密码的md5哈希暂时保存在内存中。这样,您仍然可以在需要时使用MD5,但可以安全地存储密码。@SinanSamet这真的值得压缩用户的安全性吗?@SinanSamet替代登录。是的,它会工作,是的,它会危害用户安全。这是一个好主意来帮助吗?它告诉我在使用Illumb\Foundation\Auth时找不到类'Illumb\Foundation\Auth'@SinanSamet将覆盖登录。是的,它将工作,是的,它将危害用户安全。这是一个好主意来帮助吗?它告诉我在使用Illumb\Foundation\Auth时找不到类'Illumb\Foundation\Auth';我也试过了,但还是没有登录。上面写的是错误的证件我从项目中拿走了这个。试着去死“自闭症”——自闭症出现了吗?如果没有-你错过了一些东西,如果有人想知道为什么MD5Hasher类不工作,你需要包括以下内容:namespace App\Classes;使用Illumb\Hashing\BcryptHasher作为BcryptHasher;使用App\User作为用户;如果多个用户使用相同的密码,会发生什么情况?只搜索哈希密码,是否与用户名/电子邮件有任何关系?我也尝试过,但它仍然没有登录。上面写的是错误的证件我从项目中拿走了这个。试着去死“自闭症”——自闭症出现了吗?如果没有-你错过了一些东西,如果有人想知道为什么MD5Hasher类不工作,你需要包括以下内容:namespace App\Classes;使用Illumb\Hashing\BcryptHasher作为BcryptHasher;使用App\User作为用户;如果多个用户使用相同的密码,会发生什么情况?只搜索哈希密码,是否与用户名/电子邮件有任何关系?