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(); }