我想要对具有特定扩展名的URL进行身份验证,但我无法理解Spring Security中Apache Ant解析器的功能。它似乎只支持从左到右解析,而不是像正则表达式那样使用更常见的东西。基本上,我想要这样的事情:
<intercept-url pattern="/**.html*" access="isAuthenticated()" />
任何包含&#34; .html&#34;的网址最后需要认证。有没有办法实现这个目标?
答案 0 :(得分:1)
您可以更改request matcher:
- request-matcher 定义
RequestMatcher
中使用的FilterChainProxy
策略以及intercept-url
创建的bean以匹配传入的请求。选项目前是ant
,regex
和ciRegex
,用于ant,regular-expression和不区分大小写的正则表达式。使用其pattern和method属性为eachintercept-url元素创建单独的实例。使用AntPathRequestMatcher
匹配Ant路径,并使用RegexRequestMatcher
匹配正则表达式。有关如何执行匹配的更多详细信息,请参阅这些类的Javadoc。 Ant路径是默认策略。
但是AntPathMatcher应该这样做:
一些例子:
com/t?st.jsp
- 匹配com/test.jsp
,但com/tast.jsp
或com/txst.jsp
- 中的所有
com/*.jsp
- 匹配.jsp
目录com
个文件com/**/test.jsp
- 匹配test.jsp
路径下的所有com
个文件org/springframework/**/*.jsp
- 匹配.jsp
路径下的所有org/springframework
个文件org/**/servlet/bla.jsp
- 匹配org/springframework/servlet/bla.jsp
,但org/springframework/testing/servlet/bla.jsp
和org/servlet/bla.jsp