You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

不使用废弃WebSecurityConfigurerAdapter禁用SecurityContext问题

问题原因

你两次重写配置返回403的问题出在三个地方:

  • 第一个SecurityFilterChain配置只声明了路径匹配规则和SecurityContext禁用逻辑,没有给匹配到的请求配置授权规则,Spring Security默认会拒绝所有未明确配置授权规则的请求,直接返回403。
  • 第二个方案不仅还继承了已废弃的WebSecurityConfigurerAdapter,匹配路径还错写成了/v1/containers/*,和目标路径/my/path/*不匹配,而且WebSecurityCustomizer.ignoring()会让路径完全绕过整个Spring Security过滤器链,和你原本「仅禁用SecurityContext」的需求不一致。
  • 只配置单条路径匹配的过滤链时,没有给其余路径提供兜底的安全过滤链,会导致所有非目标路径的安全规则异常。
官方推荐正确配置

你需要定义两条优先级不同的SecurityFilterChain,分别处理目标路径和其余路径的规则,代码如下:

@EnableWebSecurity
public class MyWebSecurityConfiguration {

    // 高优先级处理目标路径:仅禁用SecurityContext,明确放行所有请求
    @Bean
    @Order(Ordered.HIGHEST_PRECEDENCE)
    public SecurityFilterChain customPathFilterChain(HttpSecurity http) throws Exception {
        http
                .mvcMatcher("/my/path/*")
                .authorizeRequests()
                .anyRequest().permitAll()
                .and()
                .securityContext().disable();
        return http.build();
    }

    // 低优先级兜底处理所有其他路径
    @Bean
    public SecurityFilterChain defaultFilterChain(HttpSecurity http) throws Exception {
        http
                .authorizeRequests()
                .anyRequest().authenticated()
                // 这里按需补充你项目原本的其他安全配置,比如表单登录、csrf配置、接口权限规则等
                ;
        return http.build();
    }
}
配置说明
  • 多个SecurityFilterChain必须通过@Order指定执行顺序,匹配范围越小的链优先级越高,避免被兜底链提前拦截。
  • WebSecurityCustomizer.ignoring()仅适合配置静态资源等完全不需要任何安全处理的路径,如果你只是要关闭某几个过滤器,不要用这个方案,否则会直接绕过所有安全校验逻辑。
  • 每一条SecurityFilterChain都必须明确配置authorizeRequests授权规则,否则会触发默认的拒绝访问逻辑返回403。

内容的提问来源于stack exchange,提问作者Alan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 11:33:15