JwtUtils.java 2.4 KB
package org.nafmii.common.utils;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import lombok.extern.slf4j.Slf4j;
import org.nafmii.common.constant.HttpClientHeaderEnum;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@Slf4j
public class JwtUtils {
    public static final String TOKEN_HEADER = "Authorization";

    public static final long EXPIRITION = 1000 * 60 * 60 * 24 * 7;
//    public static final long EXPIRITION = 1000 * 60;

    public static final String APPSECRET_KEY = "qwertyuiop123456780";


    public static String generateJsonWebToken(Map<String,Object> param) {
        if (param.isEmpty()) {
            return null;
        }
        return Jwts
        .builder()
        .claim(HttpClientHeaderEnum.USER_HEADER_USER_ID.getCode(), param.get(HttpClientHeaderEnum.USER_HEADER_USER_ID.getCode()))
        .setIssuedAt(new Date())
        .setExpiration(new Date(System.currentTimeMillis() + EXPIRITION))
        .signWith(SignatureAlgorithm.HS256, APPSECRET_KEY).compact();
    }


    public static Claims checkJWT(String token) {
        try {
        final Claims claims = Jwts.parser().setSigningKey(APPSECRET_KEY).parseClaimsJws(token).getBody();
        return claims;
        } catch (Exception e) {
        e.printStackTrace();
        return null;
        }
    }

        /**
      * 获取用户信息
      * @param token
      * @return
      */
    public static Claims getUserInfo(String token){
      return  Jwts.parser().setSigningKey(APPSECRET_KEY).parseClaimsJws(token).getBody();

    }
         /**
    * 是否过期
    * @param token
    * @return
    */
    public static boolean isExpiration(String token){
        try {
            Claims claims = Jwts.parser().setSigningKey(APPSECRET_KEY).parseClaimsJws(token).getBody();
            return claims.getExpiration().before(new Date());
        } catch (Exception e){
            log.error("令牌已过期");
            return true;
        }
    }

    public static void main(String[] args) {
        Map<String,Object> map = new HashMap<>();
        map.put("userId",12312321313L);
        String token = generateJsonWebToken(map);
        System.out.println(token);
        Claims claims = getUserInfo(token);
        System.out.println(claims.get(HttpClientHeaderEnum.USER_HEADER_USER_ID.getCode()));
        System.out.println(isExpiration(token));
    }
}