Frage

Ich habe ein Problem mit den Authentifizierungsfunktionen von Servlets bekam 3.0:

Mit diesem Code in einem Servlet v3:

log.info(""+request.getUserPrincipal());
log.info(""+request.getAuthType());
log.info("===^===");
request.logout() ;
log.info(""+request.getUserPrincipal());
log.info(""+request.getAuthType());
request.authenticate(response) ;
log.info("===v===");
log.info(""+request.getUserPrincipal());
log.info(""+request.getAuthType());

Ich würde immer erwartet, dass die Username / Login-Fenster, um zu sehen, wegen der logout() Funktion. Stattdessen scheint es einen ‚Cache‘ Mechanismus zu sein, die die Anmeldeinformationen neu zu besiedeln und stornieren meine Abmeldung ...

Admin

BASIC

=== ^ ===

null

null

=== === v

Admin

BASIC

Ist es ein Problem mit meinem firefox, oder etwas, das ich in dem Servlet-Code bin fehle?

War es hilfreich?

Lösung

Ich würde immer erwarten, dass die Username / Login-Fenster, um zu sehen, weil der logout() Funktion. Stattdessen scheint es einen ‚Cache‘ Mechanismus zu sein, die die Anmeldeinformationen neu zu besiedeln und stornieren meine Abmeldung ...

Das ist die Art und Weise HTTP BASIC AUTH entwickelt wurde, ermöglicht es beglaubigt Zustand in dem Client gehalten werden. Mit anderen Worten, seine unmöglich mit basic / Digest-Authentifizierung abzumelden, kann der Server nicht einen Client von Caching stoppen und einen BASIC-Auth Authenticator bei zukünftigen Anfragen an den Server erneut zu senden.

Mein Vorschlag ist die Verwendung formularbasierte Authentifizierung und die login Methode der HTTPServletRequest .

Referenzen

Andere Tipps

Es ist keines von beiden. Einmal angemeldet, wird der Browser immer Ihre Benutzer-ID und das Passwort an die URL übergeben. Bis Sie starten Sie Ihren Browser. Soweit ich weiß, jeder Browser tut das. Und soweit ich weiß, gibt es derzeit keine Möglichkeit, den Browser zu sagen, über die Anmeldeinformationen zu vergessen.

Doch Sie werden sehen, Ihre Sitzung wird anders sein, wenn Sie abgemeldet. Die übliche Lösung ist eine Variable von einer Art, um die Sitzung hinzuzufügen. Sagen Sie "loggedin". Wenn diese Variable fehlt wissen Sie, der Benutzer sich zuerst anmelden muss und Sie werden umgeleitet sagen login.jsp. Und sobald der Benutzer weitergegeben dieses jsp Sie erneut diese Variable gesetzt.

Die Verwendung von Filtern Sie das systemweite erzwingen kann.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top