Spring Security中的authorizeRequests有什么作用?

w1jd8yoj  于 2022-10-30  发布在  Spring
关注(0)|答案(1)|浏览(386)

我一直在尝试为不同的api端点配置多个安全配置,直到我有了这个配置:

http
    .antMatcher("/user/**")
    .authorizeRequests()
        .antMatchers("/user/document/**").permitAll()
        .and()
    .authorizeRequests()
        .anyRequest().authenticated()
        .and()
    .httpBasic();

这个配置是工作的,但我也感到困惑,当我试图删除第二个authorizeRequests()(见下)。配置也是工作的。

http
    .antMatcher("/user/**")
    .authorizeRequests()
        .antMatchers("/user/document/**").permitAll()
        .anyRequest().authenticated()
        .and()
    .httpBasic();

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

hts6caw3

hts6caw31#

引用文档:
请注意,匹配器是按顺序考虑的。
在您的配置中,/user/**的优先级高于/user/document/**。因此,在这两种情况下,第二个antMatcher(...)永远不会应用。回答您的第二个问题(我是否需要每次都调用它?)-答案是NO。下面是一个示例配置(同样来自文档):

http.authorizeRequests().antMatchers("/admin/**").hasRole("ADMIN")
    .antMatchers("/**").hasRole("USER").and().formLogin();

相关问题