JWT校验令牌
【摘要】 package com.easy.archiecture.support;
import com.auth0.jwt.JWTSigner;
import com.auth0.jwt.JWTVerifier;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.j...
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; } }
}
文章来源: blog.csdn.net,作者:East Horse,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/weixin_44613138/article/details/108694576
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)