【问题标题】:security-constraint and welcome-file安全约束和欢迎文件
【发布时间】:2011-07-03 23:32:04
【问题描述】:

在我的 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 源文件。

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

【问题讨论】:

  • 我是唯一遇到这种问题的人!是否有替代方法来保护 facelets 源文件?

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


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    它工作正常,但它不显示欢迎文件,因为即使是根 路径被阻塞。我试图将 / 添加到第二个 安全约束,但什么都没有。

    在这种情况下,它应该可以工作。我在我的机器上测试了它,它第一次不起作用。直到,我们重新启动应用服务器。然后它会按预期运行。

    【讨论】:

    • 哦,我们更新了 web.xml:我们的 是 /index.xhtml,我们将其更新为 index.xhtml
    猜你喜欢
    • 2023-04-03
    • 2020-12-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-10
    • 1970-01-01
    • 2011-03-26
    • 1970-01-01
    相关资源
    最近更新 更多