2016-06-14 3 views
3

laravel로 실패한 로그인 시도를 기록하려면 어떻게해야합니까? 5.2 인증 스카 폴딩이 설치되어 있습니다.Laravel 5.2의 로그인 시도에 실패했습니다.

나는

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

을하지만 이것은 단지 것을 기록합니다/내 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', 
    ], 
]; 

에 그리고 내 응용 프로그램/리스너에서 다음 LogAuthenticationAttempt.php

을 추가 한 로그인 시도가 완료되었습니다.> LogSuccessfulLogin Listener를 사용하여 성공적인 로그인 시도를 기록 할 수는 있지만 실패한 로그인 시도를 기록하는 방법을 볼 수 없습니다.

LogSuccessfulLogin Listener의 로그 항목에서 is_success 값을 업데이트 할 수 있지만 LogAuthenticationAttempt와 LogSuccessfulLogin간에 동일한 로그인 시도로 식별하기 위해 사용할 수있는 항목은 무엇입니까?

+1

문서에는 없지만 별도의 "실패한"이벤트가있는 것처럼 보입니다. 테스트 할 가치가 있습니다. https://laravel.com/api/5.2/Illuminate/Auth/Events/Failed.html – Pevara

+0

찾았습니다. 나는 최선의 방법은 아니라고 생각하지만 시도해 볼 수있다. http://laravel-recipes.com/recipes/220/listening-for-authentication-attempts –

+0

@Pevara 당신은 정확하다. 이 문서가 왜 문서화되어 있는지 이해하지 못합니다. – user794846

답변

4

내가 팔로우하는 문서에 실패한 이벤트가있었습니다. Pervara의 코멘트를보십시오.

은 내가 EventsServiceProvider.php이 추가 :

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

그리고 다음 코드를 사용하여 응용 프로그램/수신기/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(); 
} 

작품.

+0

실패한 이벤트가 이전 버전의 5.2와 같지 않은 것 같습니다. – user794846

+0

기존 사용자 이름이 제공되지 않으면 작동하지 않는 것 같습니다. $ log-> user_id = $ event-> credentials [ 'user_id']를 사용하십시오; 그럴 경우. – Matthieu

관련 문제