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

时间:2016-06-14 13:36:34

标签: 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',
    ],
];

在我的app / Listeners / LogAuthenticationAttempt.php

我有

    $log = new Access_Log();
    $log->ip_address = Request::getClientIp();
    $log->is_success = 0;
    $log->save();

但这只是记录已经进行了登录尝试>我可以使用LogSuccessfulLogin Listener记录成功的登录尝试,但是我无法看到如何记录失败的登录尝试。

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

2 个答案:

答案 0 :(得分:7)

原来有一个失败的事件,它不在我关注的文档中。见Pervara的评论。

我将此添加到EventsServiceProvider.php:

    'Illuminate\Auth\Events\Failed' => [
        'App\Listeners\LogFailedAuthenticationAttempt',
    ],

使用以下代码创建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();
}

完美无缺。

答案 1 :(得分:0)

您必须首先检查用户是否存在,例如if($ event-> user!= null){ ...然后登录 }