扩展或后缀上的Spring Security Apache Ant URL过滤

时间:2015-11-05 13:39:20

标签: java ant spring-security

我想要对具有特定扩展名的URL进行身份验证,但我无法理解Spring Security中Apache Ant解析器的功能。它似乎只支持从左到右解析,而不是像正则表达式那样使用更常见的东西。基本上,我想要这样的事情:

<intercept-url pattern="/**.html*" access="isAuthenticated()" />

任何包含&#34; .html&#34;的网址最后需要认证。有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:1)

您可以更改request matcher

  
      
  • request-matcher 定义RequestMatcher中使用的FilterChainProxy策略以及intercept-url创建的bean以匹配传入的请求。选项目前是antregexciRegex,用于ant,regular-expression和不区分大小写的正则表达式。使用其pattern和method属性为eachintercept-url元素创建单独的实例。使用AntPathRequestMatcher匹配Ant路径,并使用RegexRequestMatcher匹配正则表达式。有关如何执行匹配的更多详细信息,请参阅这些类的Javadoc。 Ant路径是默认策略。
  •   

但是AntPathMatcher应该这样做:

  

一些例子:

     
      
  • com/t?st.jsp - 匹配com/test.jsp,但com/tast.jspcom/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.jsporg/servlet/bla.jsp
  •