2016-08-22 3 views
0

Ich bin neu in Laravel. Ich versuche, Benutzer anmelden, aber ich bekomme die folgende Fehlermeldung jedes Mal: ​​

Error in SessionGuard.php Linie 439: Argument 1 geben \ Auth \ SessionGuard :: Anmelden Illuminate() muss eine Instanz von Illuminate \ sein Verträge \ Auth \ authentifizierbarer, Array

gegeben

hier ist meine Form:

<form class="form-horizontal" method="post" action="{{ route('login') }}"> 
{{ csrf_field() }} 
     <input type="email" class="form-control" name="email" id="email"><br> 
     <input type="password" class="form-control" name="password" id="password"><br> 
     <button type="submit" class="btn btn-default">Sign in</button> 
</form> 

und hier ist mein Weg:

Route::post('login/', ['as' => 'login', 'uses' => '[email protected]']); 

und Login-Methode in UsersController:

public function login(Request $request){ 
    $this->validate($request, ['email' => 'required|email', 'password' => 'required']); 
    $user = $request->all(); 
    Auth::login($user); 
    return redirect('/'); 
} 

Vielen Dank für jede Hilfe

+1

Ihr 'Auth :: versuch'. – tkausl

Antwort

1

Wenn Sie wollen, einen Benutzer in dann möchten Sie sich anmelden Auth::attempt() verwenden, anstatt Auth::login().

Auth::attempt() akzeptiert ein Array von Schlüssel/Wert-Paaren als erstes Argument. Die Werte im Array werden verwendet, um den Benutzer in Ihrer Datenbanktabelle zu finden.

Also in Ihrem Code dies wäre:

public function login(Request $request){ 
    $this->validate($request, ['email' => 'required|email', 'password' => 'required']); 
    $user = $request->all(); 
    Auth::attempt($user); 
    return redirect('/'); 
} 

Sie Auth::login() manuell einen vorhandenen Benutzer in Ihrer Anwendung verwenden würde loggt sein. Das bereitgestellte Objekt muss eine Implementierung des Illuminate\Contracts\Auth\Authenticatable sein, die bereits im Standardmodell App\User implementiert ist. Zum Beispiel könnte dies wie folgt aussehen:

public function manualLogin(){ 
    $user = User::find(1); 
    Auth::login($user); 
    return redirect('/'); 
} 

Sie mehr dazu auf die Dokumentation lesen, die ich oben verlinkt haben.

Verwandte Themen