如何在laravel 8中使用md5而不是bcrypt散列密码?
我想用md5而不是laravel8中的bcrypt散列密码。 在我的登录控制器LoginController.php中:如何在laravel 8中使用md5而不是bcrypt散列密码?,laravel,eloquent,laravel-7,laravel-8,laravel-datatables,Laravel,Eloquent,Laravel 7,Laravel 8,Laravel Datatables,我想用md5而不是laravel8中的bcrypt散列密码。 在我的登录控制器LoginController.php中: protected function credentials(Request $request) { return ['user_name' => $request->{$this->username()}, 'password' => md5($request->password), 'actif' =&
protected function credentials(Request $request)
{
return ['user_name' => $request->{$this->username()}, 'password' => md5($request->password), 'actif' => 'Y'];
}
在我的UserController中,我有:
public function store(Request $request)
{
$this->validationRules($request);
$user = new User();
$user->password = md5("00000000");
$user->actif = 'Y';
$user->user_name = $request->input('user_name');
$user->save();
return redirect('/users');
}
新用户使用md5保存在数据库中,但当我尝试登录时,它会出现以下错误:
These credentials do not match with our records
您需要编写登录控制器 在带有AUTH软件包的Laravel 7中(Illumb\Foundation\AUTH\AuthenticatesUsers),您可以转到:
- Http>Controllers>Auth>LoginController.php
protected function attemptLogin(Request $request)
{
// Your login logic
}
如果您使用其他软件包,则方法将有所不同,如果是这样,请查看软件包的文档。阅读资源代码后,您将发现Laravel在
供应商/src/illighte/src/Auth/EloquentUserProvider中验证用户凭据。
公共函数validateCredentials(UserContract$user,array$credentials)
{
$plain=$credentials['password'];
返回$this->hasher->check($plain,$user->getAuthPassword());
}
Models/User.php
类用户扩展可验证性
{
公共函数getAuthPassword()
{
返回['password'=>$this->attributes['password']];
}
}
selfeQuentUserProvider
扩展自vendor/src/illighte/src/Auth/EloquentUserProvider.php
namespace-App\Libs;
使用Illumb\Auth\EloquentUserProvider;
使用Illumb\Contracts\Auth\Authenticatable;
使用light\Support\Str;
类SelfEloquentUserProvider扩展了EloquentUserProvider
{
/**
*根据给定的凭据验证用户。
*
*@param\Lightning\Contracts\Auth\Authenticatable$user
*@param数组$credentials
*/
公共函数validateCredentials(可验证的$user,数组$credentials)
{
$plain=$credentials['password'];
$authPassword=$user->getAuthPassword();
返回hash_等于(md5($plain),$authPassword['password']);
}
}
App/Providers/AppServiceProvider
类AppServiceProvider扩展了ServiceProvider
{
/**
*引导任何应用程序服务。
*
*@返回无效
*/
公共函数boot()
{
\Auth::provider('self-elount',函数($app,$config){
返回New\App\Libs\SelfEloquentUserProvider($App['hash',$config['model']);
});
}
......
}
config/auth.php
通过这种方式,您可以轻松地自定义自己的身份验证规则。好的,我会尝试一下。当我在EloquentUserProvider和SelfEloquentUserProvider的validateCredentials()中添加(“消息”)时,它不起作用。它仍然会转到EloquentUserProvider的validateCredentials(),而不是SelfEloquentUserProvider。我想知道,既然MD5现在已经相当破碎和不安全,你为什么坚持使用它?
'providers' => [
'users' => [
'driver' => 'self-eloquent',
'model' => \App\User::class,
]
]