2016-06-14 2 views
3

Wie würde ich fehlgeschlagene Anmeldeversuche mit Laravel protokollieren 5.2 Ich habe das Auth-Gerüst installiert.Log fehlgeschlagene Anmeldeversuche mit Laravel 5.2

Ich habe folgendes mein 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', 
    ], 
]; 

Und in meiner app/Hörer/LogAuthenticationAttempt.php

Ich habe

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

Aber diese protokolliert nur, dass ein Anmeldeversuch wurde durchgeführt> Ich kann einen erfolgreichen Anmeldeversuch mit dem LogSuccessfulLogin Listener protokollieren, aber ich kann nicht sehen, wie ein fehlgeschlagener Anmeldeversuch protokolliert wird.

Es ist mir aufgefallen, dass ich nur den is_success-Wert für den Protokolleintrag im LogSuccessfulLogin-Listener aktualisieren konnte, aber was kann ich zwischen LogAuthenticationAttempt und LogSuccessfulLogin beibehalten, um dies als denselben Anmeldeversuch zu identifizieren?

+1

Es scheint, als gäbe es ein separates "fehlgeschlagenes" Ereignis, jedoch nicht in der Dokumentation. Könnte es wert sein zu testen, da es scheint genau das zu tun, was Sie brauchen: https://laravel.com/api/5.2/Illuminate/Auth/Events/Failed.html – Pevara

+0

Ich habe das gefunden. Ich denke nicht der beste Ansatz, aber Sie können es versuchen: http://laravel-recipes.com/recipes/220/listening-for-authentication-attempts –

+0

@Pevara Sie sind richtig, es funktioniert gut. Verstehe nicht, warum das in den Dokumenten ist. – user794846

Antwort

4

Es stellte sich heraus, dass ein fehlgeschlagenes Ereignis nicht in den Dokumenten enthalten war, die ich verfolgte. Siehe Pervaras Kommentar.

Ich habe dies den EventsServiceProvider.php:

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

und erstellt app/Hörer/LogFailedAuthenticationAttempt.php mit dem folgenden Code:

 /** 
* 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(); 
} 

perfekt funktioniert.

+0

Sieht aus wie das Ereignis fehlgeschlagen war nicht in der früheren Version von 5.2. – user794846

+0

Scheint nicht zu funktionieren, wenn ein nicht existierender Benutzername angegeben wird. Verwenden Sie $ log-> user_id = $ event-> Anmeldeinformationen ['user_id']; In diesem Fall. – Matthieu