1

我希望不受限制地访问 /gadgets/{any directory}/css/*。我试着这样提

<security-constraint>
  <web-resource-collection>
    <web-resource-name>UnProtected Area</web-resource-name>
    <url-pattern>/gadgets/**/css/*</url-pattern>
  </web-resource-collection>
</security-constraint>

<security-constraint>
  <web-resource-collection>
    <web-resource-name>Protected Area</web-resource-name>
    <url-pattern>/gadgets/*</url-pattern>
  </web-resource-collection>
   <auth-constraint>
     <role-name>LOGIN</role-name>
   </auth-constraint>
</security-constraint>

但它不起作用。

4

2 回答 2

0

servlet 规范不支持您尝试使用的模式(可在此处下载):

在 Web 应用程序部署描述符中,使用以下语法来定义映射:

  • 以“/”字符开头并以“/*”后缀结尾的字符串用于路径映射。
  • 以“*”开头的字符串。前缀用作扩展映射。
  • 空字符串 ("") 是一种特殊的 URL 模式,它精确映射到应用程序的上下文根,即 http://host:port/ / 形式的请求。在这种情况下,路径信息是“/”,servlet 路径和上下文路径是空字符串(“”)。
  • 仅包含“/”字符的字符串表示应用程序的“默认”servlet。在这种情况下,servlet 路径是请求 URI 减去上下文路径,并且路径信息为空。
  • 所有其他字符串仅用于完全匹配

因此,如果您需要匹配所有 CSS 文件,您应该能够将其指定为扩展映射:

<security-constraint>
  <web-resource-collection>
    <web-resource-name>Unprotected Area</web-resource-name>
    <url-pattern>*.css</url-pattern>
  </web-resource-collection>
</security-constraint>
于 2016-03-16T03:19:57.797 回答
0

我有同样的问题。WebRoot/resources/css我的 *.css和*.js 文件位于WebRoot/resources/script. 为了访问这些文件,我将该行添加<mvc:resources mapping="/resources/**" location="/resources/" />到我的"*-servlet.xml". 现在我通过将以下代码添加到我的最后一个安全约束
来允许所有用户角色的访问: 我希望这会有所帮助。web.xml
<security-constraint> <web-resource-collection> <web-resource-name>CSS and JS Files</web-resource-name> <url-pattern>/resources/*</url-pattern> </web-resource-collection> </security-constraint>

于 2016-06-03T08:33:23.837 回答