requestMatchers().mvcMatchers( 和 mvcMatcher(

Difference between requestMatchers().mvcMatchers( and mvcMatcher(

我知道 requestMatchers 指定安全检查适用于哪些请求,但也有 mvcMatcher 非常相似。它们可以互换使用吗?

例如

    @Override
    public void configure(HttpSecurity httpSecurity) 
      httpSecurity.requestMatchers().mvcMatchers("/*")... 

    @Override
    public void configure(HttpSecurity httpSecurity) 
      httpSecurity.mvcMatcher("/*")...

这两种方法没有太大区别。当你有一个单一路径的简单配置时,你可以使用 mvcMatcher("/api/**") 例如。

当需要更高级的配置时,可以使用requestMatchers(...)requestMatcher(...),像这样:

http
    .requestMatchers()
        .mvcMatchers("/api/**")
        .mvcMatchers("/admin/**")
        .requestMatchers(myCustomRequestMatcher())

如果查看源代码,mvcMatchers()方法调用requestMatcher()方法:

public HttpSecurity mvcMatcher(String mvcPattern) {
    HandlerMappingIntrospector introspector = new HandlerMappingIntrospector(getContext());
    return requestMatcher(new MvcRequestMatcher(introspector, mvcPattern));
}