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

登录后无法生成Bearer Token,JWT格式异常问题求助

问题排查与解决方向

核心问题分析

JWT strings must contain exactly 2 period characters. Found: 0 这个错误说明系统在尝试解析一个空的或完全不符合JWT结构的字符串,而你遇到的登录后无法生成Token+BadCredentialsException异常,大概率是登录请求的处理流程被错误拦截,导致Token生成逻辑未触发,反而触发了JWT验证逻辑。

具体排查步骤

1. 检查过滤器执行顺序(AppConfig)

登录请求应该只走UsernamePasswordAuthenticationFilter(账号密码校验)和JwtTokenGeneratorFilter(Token生成),绝对不能被JwtTokenValidationFilter拦截。

  • 查看你的SecurityFilterChain配置,确认:
    • JwtTokenValidationFilter是否被设置了请求匹配规则,排除登录接口(比如/login),示例:
      .addFilterBefore(jwtTokenValidationFilter, UsernamePasswordAuthenticationFilter.class)
      .requestMatchers("/login").permitAll()
      
    • 确保JwtTokenGeneratorFilter是在UsernamePasswordAuthenticationFilter之后执行,只有账号密码校验通过后才触发Token生成:
      .addFilterAfter(jwtTokenGeneratorFilter, UsernamePasswordAuthenticationFilter.class)
      

2. 排查JwtTokenGeneratorFilter的Token生成逻辑

确认Token生成代码是否正确生成了符合JWT结构(Header.Payload.Signature)的字符串:

  • 检查是否调用了Jwts.builder()的compact()方法——这是生成完整JWT字符串的关键步骤,漏写会导致生成无效/空内容。示例正确逻辑:
    String token = Jwts.builder()
            .setSubject(auth.getName())
            .setIssuedAt(new Date())
            .setExpiration(new Date(System.currentTimeMillis() + 36000000))
            .signWith(SignatureAlgorithm.HS512, "your-secret-key")
            .compact(); // 必须调用此方法生成有效JWT
    response.addHeader("Authorization", "Bearer " + token);
    
  • 确认SecurityContextHolder中是否拿到了已认证的Authentication对象,只有登录成功后才应该触发Token生成逻辑。

3. 修正JwtTokenValidationFilter的空Token处理逻辑

如果验证过滤器意外拦截了登录请求,必须对空Token的情况直接放行,而不是抛出异常:

String authHeader = request.getHeader("Authorization");
if (authHeader == null || !authHeader.startsWith("Bearer ")) {
    // 无有效Token,直接放行(登录请求会走账号密码校验流程)
    filterChain.doFilter(request, response);
    return;
}
// 正常解析Token的逻辑

若此处未正确放行,会导致登录请求被验证过滤器拦截,解析空字符串触发Found: 0的错误,同时错误抛出BadCredentialsException。

大概率的根因

  • 过滤器顺序配置错误,JWT验证过滤器拦截了登录请求;
  • Token生成代码漏写compact()方法,未生成有效JWT;
  • 验证过滤器对空Token的处理逻辑错误,直接抛出异常阻断登录流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 14:22:52