我想要求对具有特定扩展名的URL进行身份验证,但我很难理解Spring Security中的Apache Ant解析器是如何工作的。它似乎只支持从左到右的解析,而不是使用更常见的正则表达式。本质上,我想要这样的东西:
<intercept-url pattern="/**.html*" access="isAuthenticated()" />
任何末尾有".html"的URL都需要身份验证。有办法做到这一点吗?
您可以更改请求匹配器:
- 请求匹配器定义
FilterChainProxy
中使用的RequestMatcher
策略以及intercept-url
创建的用于匹配传入请求的bean。选项当前为ant
、regex
和ciRegex
,分别用于ant、正则表达式和不区分大小写的正则表达式。使用其模式和方法属性为每个intercept-url元素创建一个单独的实例。蚂蚁路径使用AntPathRequestMatcher
进行匹配,正则表达式使用RegexRequestMatcher
进行匹配。有关如何执行匹配的更多详细信息,请参阅这些类的Javadoc。Ant路径是默认策略
但AntPathMatcher应该做到:
一些例子:
com/t?st.jsp
-匹配com/test.jsp
,也匹配com/tast.jsp
或com/txst.jsp
com/*.jsp
-匹配com
目录中的所有.jsp
文件com/**/test.jsp
-匹配com
路径下的所有test.jsp
文件org/springframework/**/*.jsp
-匹配org/springframework
路径下的所有.jsp
文件org/**/servlet/bla.jsp
-匹配org/springframework/servlet/bla.jsp
,也匹配org/springframework/testing/servlet/bla.jsp
和org/servlet/bla.jsp