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
没有被调用。作为另一个证据,右键单击浏览器中的页面,选择查看源代码,您将看到 JSF 标记未被处理。 FacesServlet
负责这一工作。
您需要更改登录页面的 URL 以匹配 FacesServlet
的 url-pattern
。例如,如果是 *.jsf
,则更新如下:
<form-login-page>/login.jsf</form-login-page>
关于java - 使用 JSF 2.0 激活 FORM 身份验证时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3968568/