j_security_check direkt aufgerufen
Ich habe eine web-Anwendung, und ich möchte die home-Seite um ein login-Formular, unter anderen Daten. Wenn die Benutzer wählen, um sich anzumelden, sollte er zu einer anderen Seite umgeleitet (z.B. login_success.jsp). Meine Frage ist: darf ich mit j_security_check-Mechanismus für die Anmeldung oder der einzige Weg ist die Verwendung einer managed bean kümmern sich um die Anmeldung?
meiner home-Seite sieht wie folgt aus:
....
<form action="j_security_check" method="POST" name="loginForm">
<h:panelGrid columns="2">
<h:outputLabel id="userNameLabel" for="j_username" value="#{label.home_username}:" />
<h:inputText id="j_username" autocomplete="off" />
<h:outputLabel id="passwordLabel" for="j_password" value="#{label.home_password}:" />
<h:inputSecret id="j_password" autocomplete="off" />
<h:panelGroup>
<h:commandButton type="submit" value="Login" />
<h:commandButton type="reset" value="Clear" />
</h:panelGroup>
</h:panelGrid>
</form>
...
wenn ich drücken Sie die Schaltfläche "login", bekomme ich -> HTTP-Status 400 - Ungültige direkte Referenz-form-login-Seite. und es ist offensichtlich, j_security_check Mechanismus nicht wissen, wo Sie "umleiten", da ich nicht Anfrage einer geschützten Ressource vor.
InformationsquelleAutor grozandrei | 2013-05-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies bedeutet, dass Sie manuell geöffnet
<form-login-page>
durch eine direkte Anfrage beim, ist nicht erlaubt.Dies ist nicht, was der Fehler war versucht, Ihnen zu sagen.
Setzen Sie die login-Seite in
/WEB-INF
Ordner, um zu verhindern, dass mögliche direkte Zugriff. Dann, um die trigger-login, verlangen Sie einfach die eingeschränkte Ressource direkt. Der container wird automatisch präsentieren die login-Seite, wenn nötig.Oder, wenn Sie nicht eingeschränkt werden-nur die Ressourcen (z.B. die login zeigt nur mehr Optionen/Funktionen, wie in einer Diskussion im forum), dann verwenden Sie nicht eine
<form-login-page>
, sondern ein JSF-Formular mit einer backing-bean, die unter Berufung aufHttpServletRequest#login()
.Siehe auch:
InformationsquelleAutor BalusC