2017-01-10 5 views
0

Ich benutze websphere jee Formularauthentifizierung, und ich möchte den eingegebenen j_username auf der Fehlerseite zurückgeben.Kann j_username nach fehlgeschlagener Anmeldung nicht lesen

Ich habe einen benutzerdefinierten Filter verwendet, um den Aufruf von j_security_check abzufangen, und fügte der Anforderung den j_username-Parameter als Attribut hinzu, aber beim Überprüfen des Attributs auf der Fehlerseite oder im Controller fand ich immer Null. Der Parameter j_username wurde im Filter vor dem Zugriff auf j_security_check gefunden, das Problem ist nach fehlgeschlagenem Anmeldeversuch.

Warum websphere beim Weiterleiten an die Fehler-URL nicht j_username und j_password übergeben, und wie kann ich j_username auf der Login-Fehlerseite aufrufen?

+0

Warum? Der Benutzer weiß, was er eingegeben hat. Warum musst du ihm sagen, was er bereits weiß? – EJP

+0

Erstens, das hat die Frage nicht beantwortet. Aber, wenn Sie neugierig sind, gibt es viele Gründe, einschließlich Sie können nicht erwarten, dass der Kunde Tippfehler vermeidet und ihn bittet, sich zu erinnern, was er tippte. Oder Sie möchten überprüfen, ob der Anmeldefehler aufgetreten ist, weil der Benutzername überhaupt nicht in Ihrer Datenbank vorhanden ist und basierend darauf die entsprechende Fehlermeldung angezeigt wird oder auf die Anmeldeseite umgeleitet wird. Es gibt viele Gründe, aber ich bin mehr an einer Antwort als an einer Frage interessiert :) –

Antwort

0

Die Lösung war einfach. Ich habe festgestellt, dass websphere 8.5 eine Sitzung erstellt, wenn die Aktion/j_security_check lautet. Also habe ich einen Webfilter für/j_security_check verwendet, um den Parameter j_username in dieser Sitzung zu speichern, und wenn ein Anmeldefehler auftritt, habe ich den Benutzernamen aus dieser Sitzung mit $ {sessionScope [STORED_USERNAME]} abgerufen.

Hoffe, dass Hilfe

0

Meine Vermutung ist, j_username wird ausgeblendet, wenn ein Login-Fehler auftritt. Sie müssen wahrscheinlich den Anmeldenamen aus der Anfrage in Ihrem Filter abrufen und ihn mit request.getParameter ("j_username") an die Fehlerseite übergeben.

Obwohl ich aus einer Sicherheitsperspektive sagen werde weniger Informationen für den Endnutzer ist besser. Ich würde dem Endnutzer nicht sagen, dass der Benutzername existiert und das Passwort falsch ist, denn wenn jemand versucht, den Account zu hacken, dann haben Sie ihm einen Teil der Information gegeben, den sie nicht kannten: "Ist der Benutzername gültig?" Ich würde den Benutzernamen anzeigen, den sie eingegeben haben, aber einfach sagen "entweder der Benutzername existiert nicht oder das Passwort war ungültig" und lassen es mehrdeutig. Auf diese Weise wird der gültige Benutzer wissen, ob er seinen Benutzernamen falsch eingegeben hat, aber der Hacker weiß nicht, ob er es richtig verstanden hat oder nicht.

+0

Der j_username wird beendet, wenn der Server auf die Fehlerseite umleitet. Ich bin damit einverstanden, dem Benutzer aus Sicherheitsgründen weniger Informationen zu zeigen. Aber diese Anwendung ist für den internen Gebrauch und nicht für die Öffentlichkeit. Aber danke für die Info –

+0

Richtig. Daher sollten Sie in der Lage sein, den Benutzernamen mit request.getParameter() vor dem Aufruf der Anmeldung zu ziehen, wodurch Sie ihn speichern können, um zur Fehlerseite zu gelangen. –

Verwandte Themen