JWT官网
https://jwt.io/
引入依赖
<dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.9.1</version>
</dependency>
设置过期时间
LocalDateTime localDateTime =LocalDateTime.now().plusDays(5);//过期时间为当前时间后五天
// localDateTime.plusHours(5); //小时
// localDateTime.plusYears(1); //年
// ......Date end =Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
自定义负载
Map<String, Object> map =new HashMap<>();
map.put("userId","123456"); //设置自定义负载
生成JWT口令
String jwt= Jwts.builder().signWith(SignatureAlgorithm.HS256,"abcd123") //设置签名算法 abc...为密钥.setClaims(map) //自定义内容.setExpiration(end)//设置过期时间.compact() ;
生成成功:eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3MDc0ODE0NTksInVzZXJJZCI6IjEyMzQ1NiJ9.slEXWwgq_UFaUrsQZeBei8hiP_JGYLAqx_j0D3q75qE
分为三个部分
校验JWT令牌
Claims claims =Jwts.parser().setSigningKey("abcd123") //加密时的密钥.parseClaimsJws("eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE3MDc0ODE0NTksInVzZXJJZCI6IjEyMzQ1NiJ9.slEXWwgq_UFaUrsQZeBei8hiP_JGYLAqx_j0D3q75qE")//生成时的令牌口令.getBody();System.out.println(claims.get("userId"));//获取自定义头部