java - 如何从 io.jsonwebtoken.Claims 转换为 java.util.Map<String,Object>?

标签 java maven jwt jjwt

我正在与 JWT 合作使用 io.jsonwebtoken 的 token Maven 依赖。

I am able to create a JWT token with custom payloads successfully.

现在,当我要去parse时它,我需要Map<String, Object>对象它具有在创建时添加的所有自定义有效负载,但不幸的是我无法完成它。

我正在使用以下代码来解析它,

JwtParser parser = Jwts.parser();
Claims claims = parser
                .setSigningKey(DatatypeConverter.parseBase64Binary(SIGN_KEY))
                        .parseClaimsJws(jwt).getBody();

现在,我有 io.jsonwebtoken.Claims ,但不知道如何转换这个 io.jsonwebtoken.Claimsjava.util.Map<String,Object>

但是我尝试用这个来知道(看起来几乎与我想要的相似):-

System.out.println(claims.toString()); -> this is correctly prints whole custom payloads.

但我需要Map<String,Object>

任何帮助将不胜感激..!!

最佳答案

io.jsonwebtoken.Claims延伸java.util.Map<String, Object>

io.jsonwebtoken.impl.DefaultClaims ,唯一提供的 Claims 的实现,是他们的 Map 实现,它装饰 LinkedHashMap<String, Object>并添加了一些方法。

所以你不应该做任何事情来转换为 Map ,因为它已经是 Map<String, Object> 。 如果您想摆脱他们的自定义方法并转换 ClaimsHashMap ,最短路线就是通过ClaimsHashMap的构造函数。它的作用与您手动执行的操作相同。

Claims claims = ...; 

Map<String, Object> expectedMap = new HashMap<>(claims);

关于java - 如何从 io.jsonwebtoken.Claims 转换为 java.util.Map<String,Object>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43717714/

相关文章:

c# - .Net Core 3.1 合并 JWT 和 OpenIDConnect 身份验证

java - 重用验证作为数据库约束

scala - 如何将Scala宏作为项目分发?

maven - 'export' 未被识别为内部或外部命令

java - Maven访问gcloud

Django Rest Framework JWT 身份验证测试

Node.js:登录后在 URL 中发送带有 token (JWT)的新请求

java - Jackson 多态性 - 没有属性的抽象类

java - 删除数组中的第一个元素并返回它

java - 在 Kotlin 中声明常量的所有方式之间的性能差异是什么?