英文:
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
我调试了代码并发现了如下的声明:
如何提取 "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:
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<SimpleGrantedAuthority> simpleGrantedAuthorities = decodedJWT.getClaim("role").asList(SimpleGrantedAuthority.class);
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论