我想对/ 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>
但它不起作用。
答案 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/css
和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>
我希望这会有所帮助。