AntMatcher和MvcMatcher之间的区别

时间:2018-05-25 20:16:21

标签: spring spring-security

HttpSecurity AntMatcher()MvcMatcher()函数的区别是什么?

有人可以解释何时使用它们吗?

3 个答案:

答案 0 :(得分:5)

official documentation-

中也明确指出了此方法的签名。
  

antMatcher(String antPattern)-允许配置HttpSecurity仅在匹配提供的蚂蚁模式时被调用。

     

mvcMatcher(String mvcPattern)-仅允许在匹配提供的Spring MVC模式时调用HttpSecurity

通常,mvcMatcherantMatcher更安全。例如:

  • antMatchers("/secured") 仅匹配确切的 /secured URL
  • mvcMatchers("/secured") 匹配/secured以及/secured//secured.html/secured.xyz

,因此更通用,还可以处理一些可能的配置错误。

mvcMatcher使用与Spring MVC用于匹配的规则相同(使用@RequestMapping注释时)。

  

如果Spring MVC无法处理当前请求,则将使用将模式用作ant模式的合理默认值。 Source

可能会补充说,mvcMatchers API(从4.1.1版本开始)比antMatchers API(从3.1版本开始)更新了。

答案 1 :(得分:2)

AntMatcher()是Ant样式的路径模式的实现。此映射代码的一部分是从Apache Ant借来的。

MvcMatcher()使用Spring MVC的HandlerMappingIntrospector来匹配路径并提取变量。

因此它们都实现了RequestMatcher接口,但是在后台使用了不同的表达语言。

答案 2 :(得分:0)

AntMatcher()主要取决于Spring MVC配置,因此没有guaradoes不能像MvcMatcher()那样在路径上提供严格的安全筛选器。这是一个例子。