JWT加密解密工具类

常用Token生成

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
/**
* token加密密钥
*/
public static final String TOKEN_KEY = "eq212341njcjbasdalsa209cmzxcnk";

/**
* token过期时间基本永久
*/
public static final Long ACCESS_TOKEN_EXPIRE = 1000L * 60L * 60L * 24L * 99999L;

/**
* 生成用户token,传入用户信息存储
*
* @param userInfo 用户信息(JSON格式的)
* @return token信息
*/
public static String createToken(String userInfo) {
return Jwts.builder()
.setHeaderParam("typ", "JWT")
.setHeaderParam("alg", "HS256")
.setSubject("user")
.setIssuedAt(new Date())
.setExpiration(new Date(System.currentTimeMillis() + ACCESS_TOKEN_EXPIRE))
.setId(userInfo)
.signWith(SignatureAlgorithm.HS256, TOKEN_KEY)
.compact();
}

/**
* 判断token是否有效
*
* @param jwtToken token
* @return 布尔值
*/
public static boolean checkToken(String jwtToken) {
if (StringUtils.isEmpty(jwtToken)) {
return false;
}
try {
Jwts.parser().setSigningKey(TOKEN_KEY).parseClaimsJws(jwtToken);
} catch (Exception e) {
return false;
}
return true;
}

/**
* token获取用户信息
*
* @param jwtToken 用户token
* @return
*/
public static String getUserInfo(String jwtToken) {
return Jwts.parser().setSigningKey(TOKEN_KEY).parseClaimsJws(jwtToken).getBody().getId();
}

/**
* 获取token主体
*
* @param jwtToken
* @return
*/
public static Claims getClaims(String jwtToken) {
return Jwts.parser().setSigningKey(TOKEN_KEY).parseClaimsJws(jwtToken).getBody();
}

相关文章

统一响应返回工具类

AES加密解密工具类