Laravel 如何使用md5而不是bcrypt?
我需要使用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
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作为用户;如果多个用户使用相同的密码,会发生什么情况?只搜索哈希密码,是否与用户名/电子邮件有任何关系?