1.引入依赖
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.18.3</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
2.利用Jwts生成token
HashMap<String, Object> map = new HashMap<>();
map.put("key1","value1");
map.put("key2","value2");
JwtBuilder builder = Jwts.builder();
String token = builder.setSubject(name) // 主题就是token中携带的数据
.setIssuedAt(new Date()) //设置token生成时间
.setId(users.get(0).getUserId().toString()) // 设置用户id位token id
.setClaims(map)
.setExpiration(new Date(System.currentTimeMillis() + 24 * 60 * 60 * 1000)) //设置过期时间
.signWith(SignatureAlgorithm.HS256, "zhang") //设置加密方式和密码
.compact();
3.利用Jwts解密token
try {
JwtParser parser = Jwts.parser();
parser.setSigningKey("zhang"); //设置解密密钥
Jws<Claims> claimsJws = parser.parseClaimsJws(token);
Claims body = claimsJws.getBody();
String subject = body.getSubject();
String key1 = body.get("key1", String.class);
System.out.println("key1 = " + key1);
System.out.println("subject = " + subject);
// token 校验成功
System.out.println("购物车列表接口 ");
return ResultVo.ok();
} catch (Exception e) {
return ResultVo.error().message("登录过期,请重新登陆");
}