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()
:
Wenn Sie sich abmelden, deaktivieren Sie einfach die Sitzung im Servlet doPost()
. Es wird die Sitzung zerstören und alle Attribute löschen.
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:
Das ist im Grunde alles.
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 vongetRemoteUser
oder ermittelt werden kanngetUserPrincipal
für die Anfrage. Ein Rückgabewertnull
von einer dieser Methoden gibt an, dass der Aufrufer nicht in Bezug auf die Verarbeitung der Anforderung bei der Anwendung angemeldet ist.
Tags und Links java java-ee authentication servlets