2016-12-06 4 views
2

Als Administrator möchte ich bestimmte Benutzer aus der Anwendung abmelden.Logout spezifischen Benutzer von Admin Laravel 5.2

Ich versuchte folgenden Code, um Benutzer aus der Anwendung abmelden.

Auth::logout(); 

Aber anstatt sich aus diesem spezifischen Benutzer abzumelden, macht es Admin Logout. Ich bekomme Sitzungs-ID vom Server, jetzt bin ich verwirrt, wie ich diese Sitzungs-ID übergeben kann, um diese bestimmte Benutzer-Sitzung zu löschen, so dass bestimmte Benutzer sich abmelden.

+0

Sie können das im Allgemeinen nicht tun, aber es hängt davon ab, wie Sie die Sitzung des Benutzers speichern. Möglicherweise können Sie die Sitzung des Benutzers ungültig machen, indem Sie sie aus dem Sitzungsspeicher des Servers löschen. Es kann einige Zeit dauern, um festzustellen, welche Sitzung zu dem Benutzer gehört, der Sie abmelden möchte. – josephting

Antwort

0

Sie können dies nicht tun, da alle Auth: Abmeldung das Löschen des Sitzungscookies ist.

Natürlich können Sie nicht auf Cookies anderer Benutzer zugreifen.

Je nach Sitzungstreiber können Sie möglicherweise die Seite des Sitzungsservers ungültig machen.

Zum Beispiel, wenn die Treiber-Datenbank ist, ist es so einfach wie eine DB-Abfrage kann die Session-ID zu löschen (aber gut, werden Sie alle Sitzungen Nutzlasten analysieren müssen, um die richtige Benutzer-ID zu finden)

Eine einfachere Möglichkeit ist das Hinzufügen eines Session_Token-Felds zu Ihrer Benutzertabelle. Bei der Anmeldung generieren Sie einen zufälligen Wert und speichern ihn sowohl in der Sitzung als auch in der Datenbank. Überprüfen Sie dann in einer Middleware, ob das session_token der DB mit dem in der Sitzung übereinstimmt.

Um einen Benutzer abzumelden, setzen Sie einfach das Token in der DB zurück und los gehts!

1

Vielleicht kann so etwas Ihnen helfen. lassen Sie mich wissen

$userToLogout = User::find(1); // Any userId you want to logout 
Auth::setUser($userToLogout); 
Auth::logout(); 
0

Sie können eine neue Spalte in der Tabelle users force_logout zum Beispiel genannt erstellen. Überprüfen Sie dann bei jeder Anfrage (in Ihrer Authentifizierungs-Middleware) force_logout. Dann können Sie den Benutzer mit Auth::logout(); protokollieren, wenn force_logout1 ist.

Wenn Sie also einen Benutzer abmelden wollen, müssen Sie nur force_logout des Benutzers 1 machen.

Verwandte Themen