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

Spring Security JWT项目中parseClaimsJws的替代方案问询

JJWT 0.11.2中parseClaimsJws报错的解决方案

问题根源

JJWT 0.11.x版本对JWT解析API做了重构,Jwts.parserBuilder()构建出的JwtParser不再直接支持旧版的parseClaimsJws()方法。这个方法原本用于解析签名后的JWS,但新版本将解析逻辑拆分为更清晰的方法,导致直接调用会出现编译或运行错误。

替代实现

在0.11.2中,你需要用parseSignedClaims()替代parseClaimsJws(),同时注意获取Claims的方法从getBody()改为getPayload():

// 旧代码(0.10.x及更早)
Claims claims = Jwts.parserBuilder()
    .setSigningKey(yourSigningKey)
    .build()
    .parseClaimsJws(token)
    .getBody();

// 0.11.2版本的正确写法
Claims claims = Jwts.parserBuilder()
    .setSigningKey(yourSigningKey)
    .build()
    .parseSignedClaims(token)
    .getPayload();

关于parseClaimsJws未标记过时的疑问

JWTParser接口中的parseClaimsJws()确实未被标记为过时,但它是官方为兼容遗留代码保留的桥接方法——内部实际会调用新版的parseSignedClaims(),但直接使用它可能因版本依赖冲突、API适配问题报错。官方明确推荐优先使用parseSignedClaims(),这是0.11.x版本的标准解析API,后续版本大概率会移除这个兼容方法。

额外提示

  • 确保项目依赖中只有JJWT 0.11.2版本,避免和旧版本(如0.10.x)混合引入,否则会引发类加载冲突。
  • 若需解析未签名的JWT(极少用在认证场景),可使用parseClaimsJwt()方法,但认证场景下请始终使用签名解析方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 11:52:13