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

Spring Boot中JWT令牌验证失败问题排查求助

问题排查方案:JWT令牌验证失败(BadCredentialsException)

核心问题场景

向http://localhost:8080/auth/signup发送POST请求成功注册,获取到JWT令牌与"Register Success"提示;但使用该令牌通过Bearer Token方式请求http://localhost:8080/api/users/12时,返回500错误,提示"Invalid token …",控制台抛出org.springframework.security.authentication.BadCredentialsException异常。

针对性排查步骤

  • 验证JWT生成与校验的密钥一致性
    检查JwtConstant.java中定义的签名密钥(如JWT_SECRET),确保JwtProvider.java生成令牌时使用的密钥,和JwtValidator.java校验令牌时使用的密钥完全一致,包括大小写、特殊字符、空格等,哪怕一个字符不同都会导致校验失败。

  • 检查JWT令牌的解析逻辑

    1. 在JwtProvider.java中确认生成令牌时是否正确写入了用户标识(如用户ID、用户名),且JwtValidator.java在校验时是否正确读取这些字段;
    2. 验证令牌的过期时间设置,若注册后令牌立即过期,也会触发无效提示,可在生成令牌时延长过期时间测试(比如设置为1天)。
  • 确认Bearer Token的请求格式
    在Postman中检查Authorization头部的格式是否正确:必须是Bearer [空格]令牌内容,不能有多余的空格、换行,也不能遗漏"Bearer"前缀。可以直接复制令牌到https://jwt.io/解析,确认令牌的payload、签名是否正常,若解析失败则说明令牌生成过程有问题。

  • 排查用户信息关联逻辑
    检查CustomerUserDetailsService.java的loadUserByUsername(或对应方法)是否能根据令牌中的用户标识正确查询到用户信息,若查询返回null或用户状态异常(如禁用),会触发BadCredentialsException。

  • 检查Spring Security配置与异常处理

    1. 查看AppConfig.java中的Security过滤器链配置,确认JwtValidator是否被正确添加到过滤器链中,且顺序是否在UsernamePasswordAuthenticationFilter之前;
    2. 检查是否有自定义的异常处理器错误捕获了BadCredentialsException但未正确处理,导致返回500而非401,建议在异常处理器中明确将该异常映射为401 Unauthorized响应。
  • 添加详细日志定位问题
    在JwtValidator.java和JwtProvider.java中添加日志,打印生成的令牌内容、校验时的令牌内容、密钥信息、解析后的用户信息等,通过控制台日志确认哪一步出现了不匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 08:12:35