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

Spring Boot 3.0.6中permitAll()配置后Security Filter Chain仍生效问题

Spring Boot 3.0.6中JWT过滤器拦截permitAll路径的问题原因

核心原因分析

  • 过滤器执行顺序错误:你自定义的JwtAuthenticationFilter如果是通过addFilterBefore/addFilterAfter直接加入Spring Security过滤器链,且没限定拦截路径,就会在Security的认证逻辑(包括permitAll()判断)之前执行。这时候还没走到路径放行的判断,过滤器就先校验JWT,自然抛出"Your request doesn't have jwt"异常。
  • 路径匹配规则不兼容:Spring Boot 3.x默认使用PathPatternParser(对应配置时的pathPatterns()方法),如果你还在使用旧的antMatchers()配置permitAll(),可能出现路径匹配失效的情况。比如/api/v1/auth/*用Ant匹配仅覆盖单层级子路径,若接口路径匹配逻辑不符合预期,就会导致放行规则不生效。
  • 自定义过滤器未做路径白名单判断:你的JwtAuthenticationFilter代码里可能没有先校验当前请求路径是否属于放行范围,不管请求路径是什么,直接执行JWT校验逻辑,完全绕过了Spring Security的路径放行配置。

快速验证方向

  1. 检查Security配置类,确认是否给自定义过滤器指定了拦截路径,比如用addFilterBefore(jwtFilter, UsernamePasswordAuthenticationFilter.class)时,要确保过滤器只拦截需要认证的路径(而非所有路径)。
  2. 把配置中的antMatchers("/api/v1/auth/**")替换为pathPatterns("/api/v1/auth/**"),适配Spring Boot 3.x的路径匹配规则。
  3. 在JwtAuthenticationFilter的doFilterInternal方法开头,先判断请求路径是否在白名单(比如/api/v1/auth/*)里,如果是则直接放行,不执行JWT校验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 23:02:42