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

Spring Boot Security配置删除/logout忽略规则后返回403问题咨询

问题原因

  1. 你没有显式关闭Spring Security默认开启的CSRF防护:对于POST/PUT/DELETE等修改类请求,Spring Security会强制校验请求中携带的CSRF Token,你访问/logout接口通常为POST请求,未携带CSRF Token时会直接被CSRF过滤器拦截返回403,根本不会走到你自定义的Token认证逻辑环节。
  2. 之前添加webSecurity.ignoring().antMatchers("/logout/**")时,/logout路径会直接跳过整个Spring Security过滤链,包括CSRF过滤器和你自定义的认证过滤器,所以不会触发CSRF校验,如果你是在Controller层自行实现了Token校验,此时功能可以正常运行,但Security层将/logout加入保护路径的配置会完全失效,这就是冗余配置的来源。
  3. 你配置了.logout().disable(),已经禁用了Spring Security默认的注销逻辑,所有注销相关的默认过滤规则都不生效,完全走自定义逻辑。

解决方案

按以下两步修改即可删除冗余配置:

  1. 在HttpSecurity配置中显式关闭CSRF防护,无状态Token认证架构不需要CSRF防护:
@Override
public void configure(HttpSecurity http) throws Exception {
    http.csrf().disable() // 新增这行关闭CSRF防护
        .sessionManagement()
        .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
        .and()
        .exceptionHandling()
        .and()
        .authenticationProvider(provider)
        .addFilterBefore(authenticationFilter(), AnonymousAuthenticationFilter.class)
        .authorizeRequests()
        .requestMatchers(PROTECTED_URLS)
        .authenticated()
        .and()
        .formLogin().disable()
        .httpBasic().disable()
        .logout().disable();
}
  1. 直接删除webSecurity.ignoring().antMatchers("/logout/**");这行冗余配置即可。

修改完成后/logout路径会正常进入Spring Security过滤链,先经过你自定义的Token认证过滤器校验,校验通过才可访问,完全符合你的预期需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 07:54:00