shikeying
2024-01-11 3b67e947e36133e2a40eb2737b15ea375e157ea0
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
package com.walker.web;
 
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
 
import java.util.Map;
 
/**
 * Token生成器定义。
 * @author 时克英
 * @date 2022-10-10
 */
public interface TokenGenerator {
 
    public final Logger logger = LoggerFactory.getLogger(TokenGenerator.class);
 
    public final static String NAME_OWNER = "walkersoft";
 
    /**
     * 存放用户缓存的键值名称, 会在token中储存对应的UUID。
     * @date 2022-11-01
     */
    public static final String NAME_lOGIN_USER_KEY = "login_user_key";
    public static final String NAME_USER_ID_KEY = "user_id_key";
 
    /**
     * 创建Token
     * @param claims 业务参数
     * @param expiredMinutes 失效分钟数
     * @param secretKey 密钥字符串,如果为空则通过方法 {@linkplain TokenGenerator#acquireSecretKey()} 获取
     * @return
     */
    String createToken(String claims, long expiredMinutes, String secretKey);
 
    /**
     * 创建Token
     * @param userKey 要放入缓存的key
     * @param userId 用户ID
     * @param expiredMinutes 失效分钟数
     * @param magicKey 密钥字符串,如果为空则通过方法 {@linkplain TokenGenerator#acquireSecretKey()} 获取
     * @return userId,loginUserKey(UUID)
     */
    String createToken(String userKey, String userId, long expiredMinutes, String magicKey);
 
    /**
     * 验证Token,并返回业务参数
     * @param token
     * @param secretKey 密钥字符串,如果为空则通过方法 {@linkplain TokenGenerator#acquireSecretKey()} 获取
     * @return 返回创建是写入的业务数据: userId,userKey
     * @throws TokenException 验证失败抛出异常
     */
    String validateToken(String token, String secretKey) throws TokenException;
 
    /**
     * 获取签名密钥
     * @return
     */
    String acquireSecretKey();
}