security-constraint和welcome-file

时间:2011-02-24 23:56:11

标签: security jsf java-ee facelets web.xml

在我的web.xml中,我使用这样的东西:

<security-constraint>
  <web-resource-collection>
    <web-resource-name>Block all</web-resource-name>
    <url-pattern>/*</url-pattern>
  </web-resource-collection>
  <auth-constraint />
</security-constraint>

<security-constraint>
  <web-resource-collection>
    <web-resource-name>Allow facelets</web-resource-name>
    <url-pattern>/faces/*</url-pattern>
    <http-method>POST</http-method>
    <http-method>GET</http-method>
  </web-resource-collection>
  <auth-constraint>
    <role-name>*</role-name>
  </auth-constraint>
</security-constraint>

除了以/ faces /开头的请求外,所有传入的请求都被阻止。 我这样做是因为,否则,未经授权的用户可以访问facelets源文件。

它工作正常,但它不显示欢迎文件,因为即使根路径被阻止。 我试图将<url-pattern>/</url-pattern>添加到第二个安全约束但没有。

2 个答案:

答案 0 :(得分:1)

如果可以,请在后缀模式上映射FacesServlet。如果您仍然使用JSF 1.x,请将其映射到*.jsf。然后,您可以使用该安全约束阻止*.xhtml上的访问。当您已经使用JSF 2.0时(您的问题历史证实了这一点),只需将其映射到*.xhtml即可。与JSF 1.x相反,FacesServlet不会在无限循环中运行。这样您根本不需要任何安全约束。唯一的问题是,如果不涉及FacesServlet,您将无法提供“普通的”XHTML文件。但是这样做无论如何都没有任何意义,无论如何这样的文件必须作为*.html提供。

PS:感谢您提供/faces/*前缀模式糟糕的另一个原因;)

答案 1 :(得分:0)

  

它工作正常,但它不显示欢迎文件,因为即使是root   路径被阻止。我试图添加/秒   安全约束,但没有。

在这种情况下,它应该有效。我在我的机器上测试过它,它第一次不起作用。直到,我们重启应用服务器。然后它表现得像预期的那样。