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")); //获取自定义头部