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

Spring Boot 3.0.10中JWT登录返回403 Forbidden问题求助

排查Spring Boot 3 JWT登录接口403 Forbidden问题

最可能的原因:请求路径匹配错误

你的SecurityFilterChain配置中,requestMatchers的路径缺少了开头的斜杠:

.requestMatchers("api/v1/auth/**")

而控制器的请求映射是@RequestMapping("/api/v1/auth"),登录接口的完整路径是/api/v1/auth/authenticate。Spring的路径匹配规则中,不带开头斜杠的路径无法匹配带斜杠的实际请求,导致登录接口没有被纳入permitAll范围,被安全拦截器判定为需要认证,返回403。

修复方案:给路径加上开头的斜杠:

.requestMatchers("/api/v1/auth/**")

其他排查方向

1. 密码编码器一致性检查

确认用户注册时使用的密码编码器,和ApplicationConfig中authenticationProvider配置的passwordEncoder是同一个实例。如果注册时用了不同的加密方式(比如明文存储,而验证时用BCrypt),会导致AuthenticationManager认证失败,部分场景下也可能引发403。

2. UserDetails状态字段验证

确保你的UserDetails实现类中,以下方法都返回true:

  • isEnabled()
  • isAccountNonLocked()
  • isAccountNonExpired()
  • isCredentialsNonExpired()
    如果其中任意一个返回false,用户会被判定为不可用,AuthenticationManager认证失败,也可能触发403错误。

3. 过滤器配置验证

虽然你的JwtAuthenticationFilter已经配置在UsernamePasswordAuthenticationFilter之前,但需要确认:

  • 过滤器逻辑中,当没有Authorization头时会直接放行(你的代码这部分逻辑是正确的)
  • 没有其他自定义过滤器或Spring Security默认过滤器干扰登录请求的处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 04:13:12