我正在开发一个jpa,jsf,jaas应用程序,现在我遇到了这个问题:
我的web.xml中有这个安全约束
<security-constraint>
<web-resource-collection>
<web-resource-name>Private</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.xhtml</form-login-page>
<form-error-page>/badLogin.xhtml</form-error-page>
</form-login-config>
</login-config>
因此,每次应用程序启动时,用户都将被定向到登录页面,但页面显示但没有通过面部servlet,因此不会呈现面部组件。这是我的Faces Servlet Mapping
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
怎么了?
答案 0 :(得分:3)
确保请求URL与faces servlet的URL模式匹配。
使用您当前的设置,您有两个选项:
更改
<form-login-page>/login.xhtml</form-login-page>
<form-error-page>/badLogin.xhtml</form-error-page>
通过
<form-login-page>/login.jsf</form-login-page>
<form-error-page>/badLogin.jsf</form-error-page>
以便它匹配faces servlet的URL模式。
或者,改变
<url-pattern>*.jsf</url-pattern>
通过
<url-pattern>*.xhtml</url-pattern>
这样您就不需要摆弄虚拟网址。