解析JWT声明时出现问题

huangapple go评论76阅读模式
英文:

Issue while parsing JWT for claims

问题

以下是您要翻译的内容:

我想提取存储在JWT中的声明作为角色。我正在使用以下代码来实现:

   DecodedJWT decodedJWT = JWT.require(Algorithm.HMAC512(SecurityConstants.SECRET.getBytes()))
                    .build()
                    .verify(token.replace(SecurityConstants.TOKEN_PREFIX, ""));
  String user = decodedJWT.getSubject();
  Claim claims = decodedJWT.getClaims();
  String roles = claims.get("roles").toString();

但是最终得到的是对象代码:

 (Value of roles)JSONNodeClaim@10091

我调试了代码并发现了如下的声明:

解析JWT声明时出现问题

如何提取 "ROLE_ADMIN"?

英文:

I want to fetch the roles stored as claim in JWT. I am using following code to do that:

   DecodedJWT decodedJWT = JWT.require(Algorithm.HMAC512(SecurityConstants.SECRET.getBytes()))
                    .build()
                    .verify(token.replace(SecurityConstants.TOKEN_PREFIX, ""));
  String user = decodedJWT.getSubject();
  Claim claims = decodedJWT.getClaims();
  String roles = claims.get("roles").toString();

But this ends up giving object code:

 (Value of roles)JSONNodeClaim@10091

I debugged the code and found claims like this:

解析JWT声明时出现问题

How can i extract the "ROLE_ADMIN" ?

答案1

得分: 3

你可以将该声明转换为 Claim 类,并调用 .asString() 方法将其作为字符串返回:

String claims = ((Claim) decodedJWT.getClaim("roles")).asString();
英文:

You can cast the claim to the Claim class and call the .asString() method to return it as a string:

String claims = ((Claim) decodedJWT.getClaim("roles")).asString();

答案2

得分: 0

你可以使用链式方法调用来获取以下内容:

String claims = decodedJWT.getClaim("roles").as(TextNode.class).asText();

英文:

You can use the chain method call to get the below:

String claims = decodedJWT.getClaim("roles").as(TextNode.class).asText();

答案3

得分: 0

角色通常是多个的,因此需要将提取作为集合进行调用。

List<SimpleGrantedAuthority> simpleGrantedAuthorities = decodedJWT.getClaim("role").asList(SimpleGrantedAuthority.class);
英文:

The roles are always multiple, hence need to call with extraction as a collection

List&lt;SimpleGrantedAuthority&gt; simpleGrantedAuthorities = decodedJWT.getClaim(&quot;role&quot;).asList(SimpleGrantedAuthority.class);

huangapple
  • 本文由 发表于 2020年8月26日 13:36:05
  • 转载请务必保留本文链接:https://go.coder-hub.com/63591110.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定