生成令牌和解析令牌的方法被废弃,以下是替代方案,其中tokenConfigProperties.getSecret()代表配置文件中配置的字符串secret,其长度必须要大于256bits。然后替换方案代码如下:
/**
* 从数据声明生成令牌
*
* @param claims 数据声明
* @return 令牌
*/
private String createToken(Map<String, Object> claims) {
//新版本的用法
byte[] keyBytes = tokenConfigProperties.getSecret().getBytes();
Key key = Keys.hmacShaKeyFor(keyBytes);
return Jwts.builder()
.setClaims(claims)
.signWith(key).compact();
}
/**
* 从令牌中获取数据声明
*
* @param token 令牌
* @return 数据声明
*/
private Claims parseToken(String token) {
Claims claims;
byte[] keyBytes = tokenConfigProperties.getSecret().getBytes();
Key key = Keys.hmacShaKeyFor(keyBytes);
try {
claims = Jwts.parserBuilder().setSigningKey(key).build().parseClaimsJws(token).getBody();
} catch (Exception e) {
claims = null;
}
return claims;
}