文档清楚地说:
默认情况下,Spring Security 要求对每个请求进行身份验证。
我试过了,不是这样的。
我创建了一个普通的 Spring Framework Java 项目(无 Spring Boot)并定义了以下 bean:
@Bean
public SecurityFilterChain testFilterChain(HttpSecurity http) throws Exception {
return http
.csrf().disable()
.build();
}
所有请求都不需要经过身份验证。事实上,甚至没有带有
AuthorizationFilter
的过滤器链。
未定义任何 bean 时结果相同。
我遗漏了什么还是文档有误?
编辑:项目设置正确。配置类具有
@EnableWebSecurity
注释,一旦我将 .authorizeHttpRequests().anyRequest().authenticated()
添加到配置中,则每个请求都必须经过身份验证。
文档是正确的,您只是断章取义。完整的段落是:
默认情况下,Spring Security 要求每个请求 已验证。也就是说,每当您使用 HttpSecurity 实例时, 有必要声明一下你的授权规则。
只要您没有提供自己的
SecurityFilterChain
bean,每个请求都会经过身份验证。如果您这样做了,它现在就会按照您设置的方式运行。