package com.htdd.system.modules.member.util;
import com.auth0.jwt.JWTSigner;
import com.auth0.jwt.JWTVerifier;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.htdd.system.modules.member.domain.entity.User;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
public class ZDUtil {
/**
* 密钥
*/
private static final String SECRET="XX#$%()(#*!()!KL<><MQLMNQNQJQK sdfkjsdrow32234545fdf>?N<:{LWPW";
/**
* 默认字段key:exp
*/
private static final String EXP="exp";
/**
* 默认字段key:payload
*/
private static final String PAYLOAD="payload";
/**
* 加密
* @param object 加密数据
* @param maxTime 有效期(毫秒数)
* @param <T>
* @return
*/
public static <T> String encode(T object,long maxTime){
try{
final JWTSigner signer=new JWTSigner(SECRET);
final Map<String ,Object> data=new HashMap<String ,Object>(10);
ObjectMapper objectMapper=new ObjectMapper();
String jsonString=objectMapper.writeValueAsString(object);
data.put(PAYLOAD,jsonString);
data.put(EXP,System.currentTimeMillis()+maxTime);
return signer.sign(data);
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
/**
* 数据解密
* @param jwt 解密数据
* @param classT 解密类型
* @param <T>
* @return
* @throws Exception
*/
public static<T> T unsign(String jwt, Class<T> classT) {
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);
ObjectMapper objectMapper = new ObjectMapper();
return objectMapper.readValue(json, classT);
}
}
return null;
} catch (Exception e) {
return null;
}
}
public static void main(String[] args) {
// 3600000
// User user = new User();
// user.setId(11L);
// String s = encode(user,1);
// System.out.println(s);
User s1 =unsign("eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2MDMzNTMzMjUzODgsInBheWxvYWQiOiJ7XCJjcmVhdGVCeVwiOm51bGwsXCJ1cGRhdGVCeVwiOm51bGwsXCJjcmVhdGVUaW1lXCI6bnVsbCxcInVwZGF0ZVRpbWVcIjpudWxsLFwicmVtYXJrXCI6bnVsbCxcImNyZWF0ZUJ5TmFtZVwiOm51bGwsXCJ1cGRhdGVCeU5hbWVcIjpudWxsLFwiaWRcIjoxMSxcIm5hbWVcIjpudWxsLFwibm9cIjpudWxsLFwiY2FyZE5vXCI6bnVsbCxcImRlcGFydG1lbnRJZFwiOm51bGwsXCJ0eXBlXCI6bnVsbCxcIm1vYmlsZVwiOm51bGwsXCJwb3J0cmFpdFwiOm51bGwsXCJpZENhcmRcIjpudWxsLFwidHJhdmVsQXV0aG9yaXR5SWRcIjpudWxsLFwicmVjZXB0aW9uaXN0XCI6bnVsbCxcImRlbEZsYWdcIjowLFwic3RhZmZJZFwiOm51bGwsXCJlcnNoaUdyb3VwSWRcIjpudWxsLFwiZXJzaGlDb25uZWN0SWRcIjpudWxsfSJ9.SnCXgKMxXBLol4dTrzY5p6jcVUHA5Ke5lNT-cC3HREc\n",User.class);
if (null == s1){
System.out.println("身份认证过期");
}
}
}
身份认证
最新推荐文章于 2024-01-29 13:40:56 发布