如何使用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之间的相同登录尝试?
答案 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){ ...然后登录 }