田源
2025-01-16 a13255b4129ee8a7a7b7e1ecd8e02dd2c78f7c17
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
package com.vci.starter.web.util;
 
import cn.hutool.core.convert.Convert;
import com.vci.starter.web.constant.TokenKeyConstant;
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
 
import java.util.Map;
 
/**
 * @Description Jwt工具类
 * @Author dangsn
 * @Date 2024/6/6 17:32
 */
public class JwtUtils {
 
    /**
     * 从数据声明生成令牌
     *
     * @param claims 数据声明
     * @return 令牌
     */
    public static String createToken(Map<String, Object> claims) {
        String token = Jwts.builder().setClaims(claims).signWith(SignatureAlgorithm.HS512, TokenKeyConstant.SECRET).compact();
        return token;
    }
 
    /**
     * 从令牌中获取数据声明
     *
     * @param token 令牌
     * @return 数据声明
     */
    public static Claims parseToken(String token) {
        return Jwts.parser().setSigningKey(TokenKeyConstant.SECRET).parseClaimsJws(token).getBody();
    }
 
    /**
     * 使用jwt的token获取在redis里存储的token
     * @param token jwt的许可
     * @return redis里的token值
     */
    public static final String getUserToken(String token){
        Claims claims = parseToken(token);
        return getValue(claims, TokenKeyConstant.JWT_TOKEN_KEY);
    }
 
    /**
     * 使用jwt的数据对象获取redis里存储的token
     * @param claims 对象
     * @return redis里的token值
     */
    public static final String getUserToken(Claims claims){
        return getValue(claims, TokenKeyConstant.JWT_TOKEN_KEY);
    }
 
    /**
     * 根据令牌获取用户标识
     *
     * @param token 令牌
     * @return 用户ID
     */
    public static String getUserKey(String token) {
        Claims claims = parseToken(token);
        return getValue(claims, TokenKeyConstant.JWT_USER_KEY);
    }
 
    /**
     * 根据令牌获取用户标识
     *
     * @param claims 身份信息
     * @return 用户ID
     */
    public static String getUserKey(Claims claims)
    {
        return getValue(claims,  TokenKeyConstant.JWT_USER_KEY);
    }
 
    /**
     * 根据令牌获取用户ID
     *
     * @param token 令牌
     * @return 用户ID
     */
    public static String getUserId(String token) {
        Claims claims = parseToken(token);
        return getValue(claims, TokenKeyConstant.JWT_USER_KEY);
    }
 
    /**
     * 根据身份信息获取用户ID
     *
     * @param claims 身份信息
     * @return 用户ID
     */
    public static String getUserId(Claims claims)
    {
        return getValue(claims, TokenKeyConstant.JWT_USER_KEY);
    }
 
    /**
     * 根据令牌获取用户名
     *
     * @param token 令牌
     * @return 用户名
     */
    public static String getUserCode(String token) {
        Claims claims = parseToken(token);
        return getValue(claims, TokenKeyConstant.JWT_USER_CODE_KEY);
    }
 
    /**
     * 根据身份信息获取用户名
     *
     * @param claims 身份信息
     * @return 用户名
     */
    public static String getUserCode(Claims claims)
    {
        return getValue(claims,  TokenKeyConstant.JWT_USER_CODE_KEY);
    }
 
    /**
     * 根据身份信息获取键值
     *
     * @param claims 身份信息
     * @param key 键
     * @return 值
     */
    public static String getValue(Claims claims, String key)
    {
        return Convert.toStr(claims.get(key), "");
    }
}