使用Laravel 5.2记录失败的登录尝试

use*_*846 4 php laravel laravel-5 laravel-5.2

如何使用laravel 5.2记录失败的登录尝试我已安装了auth脚手架.

我已将以下内容添加到EventsServiceProvider.php中

 protected $listen = [
    'Illuminate\Auth\Events\Attempting' => [
        'App\Listeners\LogAuthenticationAttempt',
    ],

    'Illuminate\Auth\Events\Login' => [
        'App\Listeners\LogSuccessfulLogin',
    ],

    'Illuminate\Auth\Events\Logout' => [
        'App\Listeners\LogSuccessfulLogout',
    ],

    'Illuminate\Auth\Events\Lockout' => [
        'App\Listeners\LogLockout',
    ],
];
Run Code Online (Sandbox Code Playgroud)

在我的app/Listeners/LogAuthenticationAttempt.php中

我有

    $log = new Access_Log();
    $log->ip_address = Request::getClientIp();
    $log->is_success = 0;
    $log->save();
Run Code Online (Sandbox Code Playgroud)

但这只是记录已经进行了登录尝试>我可以使用LogSuccessfulLogin侦听器记录成功登录尝试但我无法查看如何记录失败的登录尝试.

在我看来,我可以只更新LogSuccessfulLogin Listener中日志条目的is_success值,但是我可以使用什么来保持LogAuthenticationAttempt和LogSuccessfulLogin之间的相同登录尝试?

use*_*846 7

事实证明,有一个失败的事件,它只是在我关注的文档中.见Pervara的评论.

我将它添加到EventsServiceProvider.php:

    'Illuminate\Auth\Events\Failed' => [
        'App\Listeners\LogFailedAuthenticationAttempt',
    ],
Run Code Online (Sandbox Code Playgroud)

并使用以下代码创建了app/Listeners/LogFailedAuthenticationAttempt.php:

     /**
 * Handle the event.
 *
 * @param  Failed  $event
 * @return void
 */
public function handle(Failed $event)
{
    $log = new Access_Log();
    $log->user_id = $event->user->id;
    $log->ip_address = Request::getClientIp();
    $log->event = 'Login Failed';
    $log->is_success = 0;
    $log->save();
}
Run Code Online (Sandbox Code Playgroud)

完美的工作.