Ich verwende Laravel 5.0. Ich möchte mich nur mit dem Benutzernamen (ohne Passwort) anmelden, da ich Single Sign On für den Zugriff auf mein Laravel -Projekt verwende. Wenn sich Benutzer also erfolgreich bei Single Sign On anmelden, wird in meiner Datenbank überprüft, ob das Benutzername des Benutzers, der sich angemeldet hat oder nicht.
Ich habe den ganzen Tag danach gesucht, aber ich habe immer noch den Hinweis gefunden.
Ich habe einen Fehler:
Argument 1, das an Illuminate\Auth\Guard :: login () übergeben wird, muss die Schnittstelle Illuminate\Contracts\Auth\Authenticatable implementieren, null angegeben
wenn ich den folgenden Code in meinem LoginController verwende:
$user = User::where('USER_NAME', '=', $_GET['UserName'])->first();
if(Auth::login($user)->USER_ID == $_GET['UserName']){
return redirect('Home');
}
Und wenn ich den folgenden Code in meinem LoginController verwende:
if(Auth::attempt(['USER_ID' => $_GET['UserName']])){
return redirect('Home');
}
Ich habe einen Fehler:
Undefinierter Index: Passwort
Nach der Dokumentation:
der Benutzer wird anhand des Werts der E-Mail-Spalte abgerufen. Wenn der Benutzer gefunden wird, wird das in der Datenbank gespeicherte Hash-Passwort mit dem über das Array an die Methode übergebenen Hash-Passwortwert verglichen.
Das Passwort muss also bei dieser Methode überprüft werden und ist daher ein erforderlicher Parameter.
Sie können sich wie folgt anmelden:
$user = User::where('USER_NAME', '=', $_GET['UserName'])->first();
if (empty($user)) {
abort(404);
}
if(Auth::loginUsingId($user->id)){
return redirect('Home');
}
Sie können Benutzer nur per E-Mail manuell authentifizieren. so was:
public function authenticate(Request $request)
{
$email=$request->get('email');
if (Auth::attempt(['email' => $email))
{
return redirect()->intended('/');
}
else
{
return redirect('/login');
}
}