package com.easy.archiecture.support;
import com.auth0.jwt.JWTSigner;
import com.auth0.jwt.JWTVerifier;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.HashMap;
import java.util.Map;
public class JWTUtil_mxd {
private static final String SECRET = "!=end=!";
private static final String PAYLOAD = "payload";
private static final String EXP = "exp";
//加密,传入一个对象和一个有效期,MXD
public static <T> String sign(T object,long maxAge){
try {
//create a sign ,param是一个
final JWTSigner signer = new JWTSigner(SECRET);
//claims 要求
final HashMap<String, Object> claims = new HashMap<>();
//通过jackson的api将对象转换成json
ObjectMapper mapper = new ObjectMapper();
String jsonString = mapper.writeValueAsString(object);
claims.put(PAYLOAD,jsonString);
claims.put(EXP,System.currentTimeMillis()+maxAge);
return signer.sign(claims);
} catch (JsonProcessingException e) {
return null;
}
}
//解密,传入一个加密的token+解密后的类型
public static <T> T unsign (String jwt,Class<T> tClass){
//传入秘钥,进行解密
final JWTVerifier verifier = new JWTVerifier(SECRET);
try{
final Map<String, Object> claims= verifier.verify(jwt);
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); //payload有效值
ObjectMapper objectMapper = new ObjectMapper();
return objectMapper.readValue(json,tClass);
}
}
return null;
}
catch (Exception e){
return null;
}
}
}
JWT校验令牌
最新推荐文章于 2024-04-16 10:40:57 发布