Spring Security中的authorizeRequests有什么作用?

ana*_*ema 5 java spring spring-security

从我拥有此配置的那一刻起,我一直在尝试为不同的 api 端点设置多个安全配置:

http
    .antMatcher("/user/**")
    .authorizeRequests()
        .antMatchers("/user/document/**").permitAll()
        .and()
    .authorizeRequests()
        .anyRequest().authenticated()
        .and()
    .httpBasic();
Run Code Online (Sandbox Code Playgroud)

此配置有效,但当我尝试删除第二个配置时,我也很困惑authorizeRequests()(见下文)。配置也有效。

http
    .antMatcher("/user/**")
    .authorizeRequests()
        .antMatchers("/user/document/**").permitAll()
        .anyRequest().authenticated()
        .and()
    .httpBasic();
Run Code Online (Sandbox Code Playgroud)

这个方法有什么作用?我每次都必须调用它吗?

Pra*_*ant 1

引用自文档:

请注意,匹配器是按顺序考虑的。

在您的配置中,/user/**优先于/user/document/**. 因此,在这两种情况下,第二个antMatcher(...)都不会被应用。回答你的第二个问题(我需要每次都调用它吗?) - 答案是否定的。这是一个示例配置(同样来自文档):

http.authorizeRequests().antMatchers("/admin/**").hasRole("ADMIN")
    .antMatchers("/**").hasRole("USER").and().formLogin();
Run Code Online (Sandbox Code Playgroud)