如果用户尝试登录我的Laravel应用程序,并且密码不符合"密码"在数据库中的列,我想在另一个密码列(" old_system_password")上检查它。
我使用默认的Laravel身份验证系统,据我所知,我应该能够创建一个新的" AuthController"并覆盖内置的身份验证方法。但我在供应商文件夹中找不到任何处理密码匹配的方法,而且我也不知道如何告诉Laravel使用我的方法而不是默认方法。
我已经在网上搜索了这个,但我找到的任何解决方案似乎只适用于旧版本的Laravel。
有什么想法吗?
答案 0 :(得分:0)
默认情况下,可能会尝试使用身份验证的中间件:
$('.grid').masonry({
columnWidth: 200
});
尝试检查用户是否已经过身份验证,如果没有调用将获取密码并检入数据库的功能。
答案 1 :(得分:-1)
第一个解决方案:只需覆盖LoginController.php中的public function authenticate()
public function authenticate()
{
if (Auth::attempt(['email' => $email, 'password' => $password])) {
// Authentication passed...
return redirect()->intended('dashboard');
} else if(Auth::attempt(['email' => $email, 'password' => $old_password]) {
return redirect()->intended('dashboard');
}
}
检查:https://laravel.com/docs/5.4/authentication#authenticating-users
第二个解决方案:
1:运行php artisan event:generate
以生成laravel事件。
2:运行php artisan make:event CheckOldPassword
3:在EventServiceProvider.php中添加事件'Illuminate\Auth\Events\Failed' => ['App\Listeners\CheckOldPassword'],
4:创建函数public function handle(Failed $event){}
5:手动检查事件中的登录信息。