JWT工具类以及Maven

    技术2025-09-06  53

    maven:

    <!--JWT--> <dependency> <groupId>com.auth0</groupId> <artifactId>java-jwt</artifactId> <version>3.2.0</version> </dependency> <dependency> <groupId>io.jsonwebtoken</groupId> <artifactId>jjwt</artifactId> <version>0.6.0</version> </dependency>

    代码:

    /** * */ package com.xxx.xxxx.kit; /** * @author Administrator * */ public class JWTKit { private static final Logger logger = LoggerFactory.getLogger(JWTKit.class); private static final String SECRET = "rds2#!G9Fds%^&Gg4>aV0@s]E56*Gh^3<Ud8(Rf3}Mxs1$mq5~d7JClR"; private static final String PAYLOAD = "payload"; public static final Integer MAXAGE = 525600; //默认有效期为1年 单位/分钟 /** * 签名每次访问放到header中 * request.getHeader("Authorization") * @param object * @param maxAge (Minutes) * @return */ public static <T> String sign(T object, Integer maxAge) { try { if (object != null) { if (maxAge == null) { maxAge = MAXAGE; } Map<String, Object> headerClaims = new HashMap<String, Object>(); headerClaims.put("alg", "HS256"); headerClaims.put("type", "JWT"); ObjectMapper mapper = new ObjectMapper(); String jsonString = mapper.writeValueAsString(object); String token = JWT.create() .withHeader(headerClaims) .withClaim(PAYLOAD, jsonString)// payload .withExpiresAt(DateKit.addMinutes(new Date(), maxAge)) .sign(Algorithm.HMAC256(SECRET));// 加密 return token; } } catch (Exception e) { logger.error(e.getMessage(), e); } return null; } public static <T> T unsign(String token, Class<T> classT) { try { if (StringUtils.isBlank(token)) { return null; } JWTVerifier verifier = JWT.require(Algorithm.HMAC256(SECRET)).build(); DecodedJWT jwt = verifier.verify(token); Map<String, Claim> claims = jwt.getClaims(); if (claims.containsKey(PAYLOAD)) { String json = claims.get(PAYLOAD).asString(); ObjectMapper objectMapper = new ObjectMapper(); return objectMapper.readValue(json, classT); } } catch (TokenExpiredException e) { } catch (Exception e) { logger.error(e.getMessage(), e); } return null; } /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { // Map<String, Object> map = new HashMap<String, Object>(); // map.put("name", "张三"); // map.put("年龄", "20"); // String token = JWTKit.sign(map, MAXAGE); // System.out.println(token); System.out.println(JWTKit.unsign("eyJ0eXBlIjoiSldUIiwiYWxnIjoiSFMyNTYiLCJ0eXAiOiJKV1QifQ.eyJwYXlsb2FkIjoie1wibmFtZVwiOlwi5ZC-5Y-LNTc1N2RcIixcImlkXCI6MjcsXCJzdGF0ZVwiOjEsXCJwYXNzd29yZFwiOm51bGwsXCJsZXZlbFwiOjAsXCJjcmVhdGVUaW1lXCI6MTU4NzczNzgyNjA3OSxcImltYWdlXCI6bnVsbCxcInBob25lXCI6bnVsbCxcInByaWNlXCI6bnVsbCxcIm9wZW5JZFwiOm51bGwsXCJwYXJlbnRJZFwiOm51bGwsXCJwcml2YXRlXCI6bnVsbCxcInVwZGF0ZVRpbWVcIjpudWxsLFwidXNlckFnZW50XCI6bnVsbCxcImNvdW50XCI6bnVsbH0iLCJleHAiOjE2MTkyNzM4MjZ9.A8ObwS0WM5mF6pccOWWpS9LL56ACSJyBPSzVtS0x76A", User.class)); } }
    Processed: 0.029, SQL: 9