创建token
long currentTime = System.currentTimeMillis();
long exp = currentTime + 1000*60;// 设置有效时间为1分钟
// 创建JwtBuilder对象
JwtBuilder jwtBuilder = Jwts.builder()
// 唯一ID:{"jti": "888"}
.setId("888")
// 主体:用户{"sub":"Rose"}
.setSubject("Rose")
// 创建日期{“ita”: ""}
.setIssuedAt(new Date())
// 签名
// 参数1: 算法
// 参数2: 盐
.signWith(SignatureAlgorithm.HS256, "XXXX")
// 设置失效时间
.setExpiration(new Date(exp));
// 获取token
String token = jwtBuilder.compact();
System.out.println(token);
// base64解密
String[] split = token.split("\.");
System.out.println(base64Codec.base64.decodeToString(split[0]));// 头部
System.out.println(base64Codec.base64.decodeToString(split[1]));// 载荷
// 无法解密
System.out.println(base64Codec.base64.decodeToString(split[2]));
解析token
String token = "eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiI4ODgiLCJzdWIiOiJSb3NlIiwiaWF0IjoxNjQwMjY2NjA4LCJleHAiOjE2NDAyNjY2Njh9.B0BYeTtjSZ1PmEAFydU487ElSk8vl9S4effbIO9md6E";
// 解析token获取负载中的声明对象
Claims claims = (Claims) Jwts.parser()
// 密钥必须要与加密时候一致
.setSigningKey("XXXX")
.parse(token)
.getBody();
System.out.println("ID => " + claims.getId());
System.out.println("sub => " + claims.getSubject());
System.out.println("date => " + claims.getIssuedAt());



