Performing user authentication in Java EE / JSF using j_security_check
<login-config> <auth-method>FORM</auth-method> <realm-name>sql</realm-name> <form-login-config> <form-login-page>/login.xhtml</form-login-page> <form-error-page>/index.xhtml</form-error-page> </form-login-config> </login-config>
而不是
<login-config> <auth-method>BASIC</auth-method> <realm-name>sql</realm-name> </login-config>
基本身份验证的登录弹出窗口不再显示。。这就是我所说的。 但是随后出现的登录页面没有输入字段。。没有执行任何faclet代码。怎么会这样?
我的login.xhtml代码:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:f="http://java.sun.com/jsf/core"> <h:head> <title>Login</title> </h:head> <h:body> <form action="j_security_check" method="post"> <h:outputLabel for="j_username">Username:</h:outputLabel> <h:inputText id="j_username" required="true" /> <h:message for="j_username" /> <br /> <h:outputLabel for="j_password">Password:</h:outputLabel> <h:inputSecret id="j_password" required="true" /> <h:message for="j_password" /> <br /> <h:commandButton value="Login" /> </form> </h:body> </html>
Username: Password:
换句话说 FacesServlet 未调用。作为另一个证据,右键单击浏览器中的页面,选择 查看源 FacesServlet公司 是那个负责的人。
FacesServlet
FacesServlet公司
url-pattern 的 . 比如说 *.jsf ,然后更新如下:
url-pattern
*.jsf
<form-login-page>/login.jsf</form-login-page>