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

CsrfFilter中requireCsrfProtectionMatcher初始化规则及使用DefaultRequiresCsrfMatcher方法

匹配器初始化依据

Spring Security中CsrfFilter的requireCsrfProtectionMatcher默认初始化逻辑如下:

  • 默认会构造AndRequestMatcher组合两个校验规则,只有同时满足两个规则的请求才会触发CSRF校验:
    • 规则1:DefaultRequiresCsrfMatcher,仅匹配POST、PUT、DELETE、PATCH四类不安全的HTTP方法,GET、HEAD、OPTIONS、TRACE类请求直接跳过CSRF校验
    • 规则2:会话/凭证校验规则,当你配置了SessionCreationPolicy.STATELESS无状态会话策略+JWT资源服务时,该规则默认仅对携带会话Cookie的请求生效,无Cookie的JWT请求默认不会触发CSRF校验
      两个规则做逻辑与,所以你看到的初始化结果是AndRequestMatcher实例。
配置调整方案

你只需要显式指定CSRF校验的匹配器为DefaultRequiresCsrfMatcher即可,修改后的配置代码如下:

@Override
protected void configure(HttpSecurity http) throws Exception {
      http.csrf()
          // 显式指定仅使用DefaultRequiresCsrfMatcher做CSRF校验匹配
          .requireCsrfProtectionMatcher(new CsrfFilter.DefaultRequiresCsrfMatcher())
          .and().cors()
          .and()
          .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS)
          .and()
          .authorizeRequests()
          .antMatchers("/rest/open/**").permitAll()
          .antMatchers("/**").authenticated()
          .anyRequest().permitAll()
          .and()
          .oauth2ResourceServer()
          .jwt()
          .jwtAuthenticationConverter(getJwtAuthoritiesConverter());
}

调整后所有POST、PUT、DELETE、PATCH类型的请求都会触发CSRF校验,不再受会话策略、是否携带Cookie的影响,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 16:15:01