Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何设置带有安全约束的Facesservlet映射_Java_Jsf 2 - Fatal编程技术网

Java 如何设置带有安全约束的Facesservlet映射

Java 如何设置带有安全约束的Facesservlet映射,java,jsf-2,Java,Jsf 2,我正在开发一个jpa、jsf、jaas应用程序,现在遇到了以下问题: 我的web.xml中有此安全约束 <security-constraint> <web-resource-collection> <web-resource-name>Private</web-resource-name> <url-pattern>/*</url-pattern>

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

私有的
/*
得到
邮递
形式
/login.xhtml
/badLogin.xhtml
因此,每次应用程序启动时,用户都会被引导到登录页面,但页面会显示,但它没有经过FacesServlet,因此不会呈现faces组件。这是我的facesservlet映射

 <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>

Facesservlet
javax.faces.webapp.FacesServlet
1.
Facesservlet
*.jsf

怎么了?

只需确保请求URL与Facesservlet的URL模式匹配即可

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

  • 要么改变

    /login.xhtml
    /badLogin.xhtml
    

    /login.jsf
    /badLogin.jsf
    
    使其与Facesservlet的URL模式相匹配


  • 或者,改变

    *.jsf
    

    *.xhtml
    
    这样,您就不需要摆弄虚拟URL了


  • 只需确保请求URL与Facesservlet的URL模式匹配

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

  • 要么改变

    /login.xhtml
    /badLogin.xhtml
    

    /login.jsf
    /badLogin.jsf
    
    使其与Facesservlet的URL模式相匹配


  • 或者,改变

    *.jsf
    

    *.xhtml
    
    这样,您就不需要摆弄虚拟URL了

  • 请从智能开发人员的角度而不是哑终端用户的角度详细说明“不起作用”。是faces servlet仍然没有被调用(如果解决方案被正确应用,那么这是不可能的,因此您没有运行您认为正在运行的代码),还是只是CSS/JS/images没有被应用(这确实会发生在您对
    /*
    的过于通用的安全约束限制上)。查看生成的HTML输出和HTTP流量监视器以排除其中一个和另一个。请在smart developer的透视图中详细说明“不工作”,而不是在dumb enduser的透视图中详细说明。是faces servlet仍然没有被调用(如果解决方案被正确应用,那么这是不可能的,因此您没有运行您认为正在运行的代码),还是只是CSS/JS/images没有被应用(这确实会发生在您对
    /*
    的过于通用的安全约束限制上)。查看生成的HTML输出和HTTP流量监视器以排除其中一个和另一个。