如何使用安全约束设置Faces Servlet映射

时间:2013-02-18 13:34:03

标签: java jsf-2

我正在开发一个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>

怎么了?

1 个答案:

答案 0 :(得分:3)

确保请求URL与faces servlet的URL模式匹配。

使用您当前的设置,您有两个选项:

  1. 更改

    <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模式。


  2. 或者,改变

    <url-pattern>*.jsf</url-pattern>
    

    通过

    <url-pattern>*.xhtml</url-pattern>
    

    这样您就不需要摆弄虚拟网址。