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之间的相同登录尝试?
事实证明,有一个失败的事件,它只是在我关注的文档中.见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)
完美的工作.
| 归档时间: |
|
| 查看次数: |
3586 次 |
| 最近记录: |