使用Laravel 5.4进行自定义登录密码检查

时间:2017-04-02 17:48:14

标签: php laravel laravel-5.4

如果用户尝试登录我的Laravel应用程序,并且密码不符合"密码"在数据库中的列,我想在另一个密码列(" old_system_password")上检查它。

我使用默认的Laravel身份验证系统,据我所知,我应该能够创建一个新的" AuthController"并覆盖内置的身份验证方法。但我在供应商文件夹中找不到任何处理密码匹配的方法,而且我也不知道如何告诉Laravel使用我的方法而不是默认方法。

我已经在网上搜索了这个,但我找到的任何解决方案似乎只适用于旧版本的Laravel。

有什么想法吗?

2 个答案:

答案 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:手动检查事件中的登录信息。