2016-06-14 11 views
3

laravelで失敗したログイン試行をどのように記録しますか?5.2 authスキャフォールディングをインストールしました。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リスナーを使用してログイン試行を成功させることはできますが、失敗したログイン試行をログに記録する方法はわかりません。

LogSuccessfulLogin Listenerのログエントリのis_success値を更新するだけで済みますが、LogAuthenticationAttemptとLogSuccessfulLoginの間で同じログイン試行を継続するために使用することはできますか?

+1

ドキュメントにはありませんが、別の「失敗した」イベントが存在するようです。テストする価値があるかもしれません。https://laravel.com/api/5.2/Illuminate/Auth/Events/Failed.html – Pevara

+0

私はこれを見つけました。私は最高のaproachではないと思うが、あなたはそれを試すことができます: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

Failedイベントは、5.2の以前のバージョンではなかったようです。 – user794846

+0

既存のユーザー名が指定されていないと動作しないようです。 $ log-> user_id = $ event-> credentials ['user_id']を使用してください。その場合は。 – Matthieu

関連する問題