Как я могу зарегистрировать неудачные попытки входа в систему с помощью 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', ], ];
И в моем приложении / Listeners / LogAuthenticationAttempt.php
у меня есть
$log = new Access_Log(); $log->ip_address = Request::getClientIp(); $log->is_success = 0; $log->save();
Но это просто журнал, что была сделана попытка входа в систему.> Я могу зарегистрировать успешную попытку входа в систему с помощью LogSuccessfulLogin Listener, но я не могу увидеть, как зарегистрировать неудачную попытку входа в систему.
Мне пришло в голову, что я могу просто обновить значение is_success в записи журнала в LogSuccessfulLogin Listener, но что я могу использовать для сохранения между LogAuthenticationAttempt и LogSuccessfulLogin, чтобы идентифицировать это как ту же попытку входа?
Оказывается, произошло неудачное событие, которое просто не было в документах, которые я следил. См. Комментарий Первары.
Я добавил это в EventsServiceProvider.php:
'Illuminate\Auth\Events\Failed' => [ 'App\Listeners\LogFailedAuthenticationAttempt', ],
И создано приложение / 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(); }
Работает отлично.