Spring Security默认请求认证行为与文档不符问题咨询
Spring Security 非Boot项目默认认证规则的疑问解答
你遇到的情况是纯Spring Framework(非Spring Boot)与Spring Boot在Security默认配置上的差异,并非文档有误,也不是你遗漏了基础配置,核心原因如下:
文档中“默认要求所有请求经过认证”的前提是Spring Boot环境的自动配置
Spring Boot的Security自动配置类会默认注入.authorizeHttpRequests().anyRequest().authenticated()规则,因此所有请求会被强制要求认证,这也是文档描述的“默认情况”的适用场景。纯Spring Framework项目中,
@EnableWebSecurity仅启用基础Security功能,不会自动添加授权规则- 当你自定义
SecurityFilterChain仅配置.csrf().disable()时,相当于只关闭了CSRF防护,未启用任何授权拦截逻辑,因此过滤器链中不会包含AuthorizationFilter,所有请求无需认证即可通过。 - 即使不自定义
SecurityFilterChain,@EnableWebSecurity生成的默认配置也不会自动添加全局认证要求,必须手动配置.authorizeHttpRequests().anyRequest().authenticated(),才能让所有请求触发认证校验。
- 当你自定义
简单来说:在纯Spring项目中,Spring Security不会帮你默认添加授权规则,必须显式配置才能实现“所有请求需认证”的效果,你后来添加的配置正是正确的做法。
内容的提问来源于stack exchange,提问作者T3rm1
相关产品推荐
相关产品推荐

