Wie überprüft man, ob ein Benutzer in Servlets angemeldet ist oder nicht?

8

In einem Java-Servlet möchte ich programmatisch prüfen, ob ein Benutzer angemeldet oder nicht ist.

    
satya 16.10.2009, 10:11
quelle

3 Antworten

11

Das HttpServletRequest#getUserPrincipal() als in der anderen Antwort darauf hingewiesen, gilt nur, wenn Sie die von Java EE bereitgestellten container-verwalteten Sicherheit verwenden, wie hier hier beschrieben .

Wenn Sie jedoch eigene Sicherheit haben, müssen Sie sich auf die HttpSession . Es ist nicht so schwer, hier ist eine Übersicht, was Sie in jedem Schritt implementieren müssen:

Bei der Anmeldung holen Sie User aus der Datenbank und speichern Sie sie in der Sitzung im Servlet doPost() :

%Vor%

Wenn Sie sich abmelden, deaktivieren Sie einfach die Sitzung im Servlet doPost() . Es wird die Sitzung zerstören und alle Attribute löschen.

%Vor%

Um zu überprüfen, ob ein User angemeldet ist oder nicht, erstellen Sie einen Filter , der mit einem url-pattern , die die eingeschränkten Seiten umfasst, z /secured/* , /protected/* , usw. und implementieren doFilter() wie unten:

%Vor%

Das ist im Grunde alles.

Siehe auch:

BalusC 02.11.2009, 12:44
quelle
0

Die Java Servlet 3.1-Spezifikation (Abschnitt 13.10) sagt:

  

Wenn Sie während der Verarbeitung einer Anfrage in einer Anwendung angemeldet sind, entspricht dies genau der gültigen nicht - null -Aufruferidentität, die mit der Anfrage verknüpft ist, wie durch Aufruf von getRemoteUser oder ermittelt werden kann getUserPrincipal für die Anfrage. Ein Rückgabewert null von einer dieser Methoden gibt an, dass der Aufrufer nicht in Bezug auf die Verarbeitung der Anforderung bei der Anwendung angemeldet ist.

    
vallismortis 30.09.2016 20:45
quelle