1.引入pom文件
<dependency> <groupId>com.auth0</groupId> <artifactId>java-jwt</artifactId> <version>2.2.0</version> </dependency>
2.工具类
/** * @author Miguel.hou * @version v1.0 * @date 2019-10-10 */ @Component @Slf4j public class JWTUtils { private static final String EXP = "exp"; private static final String PAYLOAD = "payload"; private static final String JWT_KEY = "j122kx91lzpefdjclkqj"; /** * 加密,传入一个对象和有效期 */ public <T> String sign(T object) { try { final JWTSigner signer = new JWTSigner(JWT_KEY); final Map<String, Object> claims = new HashMap<String, Object>(); ObjectMapper mapper = new ObjectMapper(); String jsonString = mapper.writeValueAsString(object); claims.put(PAYLOAD, jsonString); // 过期时间单位是毫秒 claims.put(EXP, System.currentTimeMillis() + (long) (1800 * 1000)); return signer.sign(claims); } catch (Exception e) { return null; } } /** * 解密,传入一个加密后的token字符串和解密后的类型 * @param token * @param classT * @param <T> * @return */ public <T> T unsign(String token, Class<T> classT) { final JWTVerifier verifier = new JWTVerifier(JWT_KEY); try { final Map<String, Object> claims = verifier.verify(token); if (claims.containsKey(EXP) && claims.containsKey(PAYLOAD)) { long exp = (Long) claims.get(EXP); long currentTimeMillis = System.currentTimeMillis(); if (exp > currentTimeMillis) { String json = (String) claims.get(PAYLOAD); ObjectMapper objectMapper = new ObjectMapper(); return objectMapper.readValue(json, classT); } } return null; } catch (Exception e) { return null; } } }