Coverage Summary for Class: JwtUtil (cn.edu.ecnu.stu.bookstore.utils)

Class Class, % Method, % Line, %
JwtUtil 100% (1/1) 100% (3/3) 100% (9/9)


 package cn.edu.ecnu.stu.bookstore.utils;
 
 import com.alibaba.fastjson.JSON;
 import com.auth0.jwt.JWT;
 import com.auth0.jwt.JWTCreator;
 import com.auth0.jwt.algorithms.Algorithm;
 import com.auth0.jwt.interfaces.DecodedJWT;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Component;
 
 import java.util.Calendar;
 import java.util.Date;
 import java.util.Map;
 
 @Component
 public class JwtUtil {
 
     /** 盐值*/
     private static final String SING="!@#%^$*$%#^$#%^%$$#QWBADasda881";
 
     //生成令牌
     public static String getToken(Object object){
         //获取日历对象
         Calendar calendar= Calendar.getInstance();
         //默认1天过期
         calendar.add(Calendar.DATE,1);
         //新建一个JWT的Builder对象
         JWTCreator.Builder builder = JWT.create();
         String jsonStr = JSON.toJSONString(object);
         builder.withClaim("data",jsonStr);
         //设置过期时间和签名
         return builder.withExpiresAt(calendar.getTime()).sign(Algorithm.HMAC256(SING));
     }
     /**
      * 验签并返回DecodedJWT
      * @param token  令牌
      */
     public static Object getTokenInfo(String token,Class<?> clazz){
         DecodedJWT jwt = JWT.require(Algorithm.HMAC256(SING)).build().verify(token);
         return JSON.parseObject(jwt.getClaim("data").asString(), clazz);
     }
 
 }