java - 解析 JWT 以获取声明时出现问题

标签 java spring-boot

我想获取作为声明存储在 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

我调试了代码并发现了这样的声明:

enter image description here

如何提取“ROLE_ADMIN”?

最佳答案

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

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

关于java - 解析 JWT 以获取声明时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63591110/

相关文章:

java - java中的字符串无法与星号(*)匹配

spring - 创建名为 'requestMappingHandlerMapping' Spring Boot 的 bean 时出错

java - 使用 @JsonAnyGetter 时忽略 PropertyNamingStrategy

java - 在 Spring 中将字符串数组注入(inject) bean

java - KeycloakSecurityContext 在 SpringBoot 中返回 null

Spring Boot REST 服务未在 JSON 输出中显示 @ResponseStatus 异常原因

java - 如何向 Feign RequestInterceptor 传递参数?

java - 文件从未完全下载

java - JComboBox 选择更改

Java从多个数组中删除重复项