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

Spring Boot 3.2.1网关CSRF令牌未找到问题求助

Spring Cloud Gateway + Spring Security 6 CSRF禁用后仍报错的排查方案

核心原因分析

你的问题大概率是以下场景导致的:

  • Spring Cloud Gateway基于**WebFlux(响应式)**架构,但你使用了传统Servlet型的Spring Security配置,导致自定义配置未生效,网关仍采用默认的响应式Security规则(默认开启CSRF)
  • Gateway自带的Security自动配置优先级高于你的自定义配置
  • 网关路由配置中额外启用了CSRF相关过滤器

具体解决步骤

1. 修正Security配置类(必须用响应式配置)

删除原有的Servlet型Security配置,改用WebFlux专用的响应式配置:

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.web.server.ServerHttpSecurity;
import org.springframework.security.web.server.SecurityWebFilterChain;

@Configuration
@EnableWebFluxSecurity
public class GatewaySecurityConfig {

    @Bean
    public SecurityWebFilterChain springSecurityFilterChain(ServerHttpSecurity http) {
        http
            .csrf(csrfSpec -> csrfSpec.disable()) // 显式禁用CSRF
            .authorizeExchange(authorize -> authorize
                // 根据你的业务需求调整权限规则,示例为允许所有请求
                .anyExchange().permitAll()
            );
        return http.build();
    }
}

2. 排除Gateway自带的Security自动配置

如果自定义配置仍未覆盖默认规则,在启动类中排除自动配置类:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.security.reactive.ReactiveSecurityAutoConfiguration;
import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration;

@SpringBootApplication(exclude = {ReactiveSecurityAutoConfiguration.class, SecurityAutoConfiguration.class})
public class GatewayApplication {
    public static void main(String[] args) {
        SpringApplication.run(GatewayApplication.class, args);
    }
}

3. 检查网关路由配置

打开application.yml或application.properties,确保没有启用CSRF相关的默认过滤器:

spring:
  cloud:
    gateway:
      # 确保default-filters中没有CsrfHeaderFilter或其他CSRF相关配置
      default-filters: []

4. 验证配置生效

启动应用后,查看日志,搜索关键词SecurityWebFilterChain,确认加载的是你自定义的GatewaySecurityConfig中的配置,而非默认配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 14:57:38