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 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), ""); } }