package common.utils; import com.video.model.pojo.SystemUser; import io.jsonwebtoken.Claims; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import lombok.extern.slf4j.Slf4j; import java.util.Date; /** * jwt 工具 **/ @Slf4j public class JWTUtil { /** * 主题 */ private static final String SUBJECT = "chuanghai-ihotel"; /** * 加密密钥 */ private static final String SECRET = "chuanghai.ihotel"; /** * 令牌前缀 */ private static final String TOKEN_PREFIX = "ihotel"; /** * token过期时间,7天 */ private static final long EXPIRED = 1000 * 60 * 60 * 24 * 7; /** * 获取过期时间 * @return */ public static long getExpired() { return EXPIRED; } /** * 生成token * * @param loginUser * @return */ public static String geneJsonWebToken(SystemUser loginUser) { if (loginUser == null) { throw new NullPointerException("对象为空"); } String adminIdStr = ""; if (loginUser.getId() != null) { adminIdStr = loginUser.getId().toString(); } String token = Jwts.builder().setSubject(SUBJECT) //配置payload .claim("phone", loginUser.getPhoneNumber()) .claim("role_id", loginUser.getRoleId()) .claim("admin_id", adminIdStr) .setIssuedAt(new Date()) .setExpiration(new Date(CommonUtil.getCurrentTimestamp() + EXPIRED)) .signWith(SignatureAlgorithm.HS256, SECRET).compact(); token = TOKEN_PREFIX + token; return token; } /** * 解密jwt * @param token * @return */ public static Claims checkJWT(String token) { try { final Claims claims = Jwts.parser().setSigningKey(SECRET).parseClaimsJws(token.replace(TOKEN_PREFIX, "")).getBody(); return claims; } catch (Exception e) { return null; } } public static void main(String[] args) { // System.out.println(geneJsonWebToken(LoginUserDTO.builder().adminId(1L).cardNumber("123456").identityType("1").build())); } }