2016-06-10 10 views
2

Wenn ich mich abmelde, werden die Sitzungsdaten gelöscht und der Benutzer wird ausgeloggt. Sobald jedoch eine sichere Ressource/Route angefordert wird (Sie müssen sich nicht anmelden), z. B. die unten stehende Benutzerressource, wird der Benutzer automatisch authentifiziert und die sichere Ressource zurückgegeben. Nach der doppelten Überprüfung muss die Route nicht einmal mit einer Authentifizierungs-Middleware gesichert werden. Jede Route zu einem Controller, auf dem eine $ request-> user() - Instanz verwendet wird, führt zur automatischen Authentifizierung.Laravel LogOut funktioniert nicht, Benutzer wird automatisch angemeldet, nachdem er eine sichere Route angefordert hat

Kann ich nicht verstehen, was das verursachen könnte? Vielleicht speichert der Browser Zugangsdaten in einem Cookie oder anderswo und sendet sie jedes Mal? Das Feld remember_token in der Datenbank wird automatisch ausgefüllt, auch nach dem Abmelden. Laravel 5.1 und angularjs auf dem Client verwenden.

Route::resource('admin/user', 'UserController', ['before' => 'auth.basic']); 

Klasse AuthController erweitert Controller-

public function getLogout() 
    { 
     Auth::logout(); 
     Session::flush(); 
     return redirect('/'); 
    } 

Antwort

1

auth.basic ist eine Middleware für HTTP-Authentifizierung und Auth die Middleware ist, dass, wenn ein Benutzer überprüft angemeldet ist. So versuchen dies:

Route::group(['middleware' => 'auth'], function() { 
    Route::resource('admin/user', 'UserController'); 
}); 

In Ihrem Fall wi Angular JS Rückgabecode 401 ist der Benutzer ist nicht angemeldet.

+0

Aber sollte HTTP Authentifizierung nicht gut mit einem API-basierten Backend funktionieren? Es ist eine einzige Anfrage, die den Benutzernamen und das Passwort unverschlüsselt sendet. Wenn es sich authentifiziert, gibt der Server die Ressource zurück, andernfalls einen Fehler. Was ich nicht verstehe ist, wo es den Benutzernamen/das Passwort speichert und wie man es löscht? Denn Logout scheint es nicht zu klären. Idealerweise möchte ich weiterhin die HTTP-Authentifizierung verwenden und nach dem Abmelden das Cookie entfernen oder was auch immer die HTTP-Anfrage mit auth.basic authentifiziert. – LaserBeak

+0

@LaserBeak Die HTTP-Standardauthentifizierung speichert den Benutzernamen/das Passwort nicht in einer Sitzung oder einem Cookie. Es verwendet Felder im HTTP-Header, um sich mit dem Benutzeragenten zu authentifizieren. Ich bin nicht sicher, ob Sie es mit Angular JS verwenden könnten, und ich empfehle Ihnen dringend, zu der standardmäßigen Laravel-Datenbankauthentifizierung zu wechseln. – TheFallen

+0

Ich würde denken, dass auth.basic die Datenbank genauso gut verwendet, nicht? Sonst wie kann es Anmeldeinformationen authentifizieren. Ich plane, diese API mit mobilen Apps genauso gut zu verwenden, würde nicht auf Auth von Auth.basic Probleme einführen? Auth verwendet ein HTTP-Cookie, richtig? – LaserBeak

Verwandte Themen