【发布时间】:2019-05-21 15:48:13
【问题描述】:
我在 Spring Boot 中创建了一个 JWT 令牌来存储用户详细信息。当我使用 Jwttokenutil.getUsernameFromToken(authToken) [ authToken is the token pass ] 方法时,我将数据设置为主题。同样,我想将数据集设置为包含其他用户详细信息的有效负载。但我无法得到它。
======= 下面是我的令牌生成方法/代码:========
public String generateToken(HashMap<String, Object> userData,String subject)
{
String jwtToken="";
System.out.println("in generate token method : " + subject);
jwtToken = Jwts.builder()
.setSubject(subject) // subject is dbname
.claim("userDetails", userData)
.setPayload(userData.toString())
.setIssuedAt(new Date())
.setExpiration(new Date(System.currentTimeMillis() + 60*60*5*1000))
.signWith(SignatureAlgorithm.HS256, "secretkey")
.compact();
System.out.println("userData " + userData);
return jwtToken;
}
======= 下面是我创建的获取有效负载数据的方法 ======
public Object getPayloadFromToken(String token)
{
Claims body= Jwts.parser()
.setSigningKey("secretkey")
.parseClaimsJws(token)
.getBody();
System.out.println("userdet==========> " + body.get("userDetails") );
return body.get("userDetails");
}
=== 但我收到此错误 ===
java.lang.IllegalStateException:不能同时指定“payload”和“claims”。任选其一。
【问题讨论】:
标签: jwt