数据格式
Header.Payload.Signature
pom.xml
自动导的包缺依赖
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>RELEASE</version>
</dependency>
Utils.class
//加密token
String jwt = Jwts.builder()
//实体类转json后放入claims
.claim("key", new ObjectMapper().writeValueAsString(pojo))
//用来给服务器做标记
.setId(UUID.randomUUID().toString())
//设置过期时间
.setExpiration(DateTime.now().plusMinutes(30).toDate())
//加密
.signWith(SignatureAlgorithm.RS256,privateKey)
.compact();
//解析token
Jws<Claims> claimsJws = Jwts.parser().setSigningKey(publicKey).parseClaimsJws(jwt);
Claims claims = claimsJws.getBody();
String id = claims.getId();
Pojo pojo1 = new ObjectMapper().readValue(claims.get("key").toString(), Pojo.class);
Date expiration = claims.getExpiration();
//不检验直接获取Payload
//截取payload
String payloadStr = StringUtils.substringBetween(jwt, ".");
//payload用的Base64加密
byte[] decode = Base64.getDecoder().decode(payloadStr);
//解析出json格式
//{"key":"{\"filed\":\"value\"}", claim
"jti":"773f6d51-09fa-4692-bddd-17c59b000ecd", id
"exp":1598483900 expiration}
String paload = new String(decode, "UTF-8");