2017-03-24 4 views
0

Ich benutze benutzerdefinierte Authentifizierung. Benutzerstatus hinzugefügt (aktivieren/deaktivieren) Check-in retrieveByCredentials Funktion meines benutzerdefinierten Providers. Nun, wie kann ich den Fehler unterscheiden, ob es kommt, weil Benutzer falsche Anmeldeinformationen eingeben oder weil Benutzer deaktiviert ist?Laravel Authentifizierung Fehlermeldung

Bisher habe ich folgende Funktion sendFailedLoginResponse betrachtet, aber es gibt keine Möglichkeit zu unterscheiden.

Irgendwelche Vorschläge, wie kann ich das erreichen?

Antwort

1

Ich habe dies in der folgenden Art und Weise genähert:

/* 
    LoginController.php 
*/ 

/** 
* Override default login username to be used by the controller. 
* 
* @return string 
*/ 
public function username() 
{ 
    return 'username'; 
} 

/** 
* Override default validation of the user login request. 
* 
* @param \Illuminate\Http\Request $request 
* 
* @return void 
*/ 
protected function validateLogin(Request $request) 
{ 
    $this->validate($request, [ 
     $this->username() => [ 
      'required', 
      'min:4', 
      'max:30', 
      'regex:/^[\S]*$/', 
      Rule::exists('users')->where(function ($query) 
      { 
       $query->where('active', 1); 
      }) 
     ], 
     'password' => 'required|min:6|max:100' 
    ]); 
} 

, was der Name Setzt und erwarteten Wert des Feldes für „aktiv“ ermöglicht es Ihnen, je nach zu validieren, ob Benutzer aktiv sind /aktiviert. Sie haben erwähnt, dass Sie dies bereits getan haben, aber in diesem Fall wird der Validierungsfehler auch die Validierungsnachricht für die Regel "exists" sein. In meiner Anwendung muss ich mich eigentlich nicht darum kümmern, warum ein Benutzer die Anmeldung fehlgeschlagen hat, aber das Überprüfen der Überprüfungsnachricht könnte in Ihrem Fall ausreichen.

+0

Hallo danke für die Antwort. Benutzerdetails meiner Anwendung werden nicht in meiner Datenbank gespeichert. Die Benutzer werden in einem anderen Benutzersystem gespeichert (intern, das von allen anderen Anwendungen gemeinsam genutzt wird). Alle benutzerbezogenen Aktionen werden über die API ausgeführt. Daher kann ich die 'Existier'-Regel nicht verwenden. –

+0

Wie auch immer, ich kann darüber nachdenken, etwas in "validateLogin" -Funktion zu tun. –