**不在web.xml安全约束中工作

时间:2016-03-16 02:55:02

标签: java servlets web.xml security-constraint

我想对/ 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>

但它不起作用。

2 个答案:

答案 0 :(得分:0)

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

  

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

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

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

<security-constraint>
  <web-resource-collection>
    <web-resource-name>Unprotected Area</web-resource-name>
    <url-pattern>*.css</url-pattern>
  </web-resource-collection>
</security-constraint>

答案 1 :(得分:0)

我遇到了同样的问题。我的* .css和* .js文件位于WebRoot/resources/cssWebRoot/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>
我希望这会有所帮助。