JWT 生成token

发布时间 2023-05-09 16:40:20作者: CrushGirl

 

 

package com.landray.kmss.cmex.ssooauth.util;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.ExpiredJwtException;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.apache.commons.lang.StringUtils;

import java.util.Calendar;
import java.util.Date;

public class TokenUtil {

    //过期时间:秒
    public static final int EXPIRE = 10;

    public static String getToken(String appKey, String secretKey) {
        if (StringUtils.isEmpty(secretKey)) {
            return null;
        }
        Calendar nowTime = Calendar.getInstance();
        nowTime.add(Calendar.SECOND, EXPIRE);
        //过期时间
        Date expireDate = nowTime.getTime();
        return Jwts.builder()
                .setHeaderParam("alg", "HS256")
                .setHeaderParam("typ", "JWT")
                .setIssuedAt(new Date())
                .setIssuer(appKey)
                .setExpiration(expireDate)
                .signWith(SignatureAlgorithm.HS256, secretKey)
                .compact();
    }


    /**
     * 解析 jwt
     */
    public static boolean verifyToken(String token, String secretKey) {
        boolean validation = false;
        Claims claims;
        try {
            claims = Jwts.parser().setSigningKey(secretKey).parseClaimsJws(token).getBody();
            System.out.println("claims--->" + claims);
            validation = true;
        } catch (ExpiredJwtException e) {
            //此异常为生成的token过期异常
            System.out.println("token 已过期" + e.getClaims());
            e.printStackTrace();
        } catch (Exception e) {
            System.out.println(" Some other exception in JWT parsing !");
            e.printStackTrace();
        }

        return validation;
    }

    public static void main(String[] args) {
        String token = getToken("biBoard", "secret");
        System.out.println(token);
        String token1 = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpYXQiOjE2ODM2MTk4OTcsImlzcyI6ImJpQm9hcmQiLCJleHAiOjE2ODM2MTk5MDZ9.ZHw3LDlPtxtNXS5cM0LHyjyXqspde1BzDwNaVvT_s1k";
        boolean validation = verifyToken(token1, "secret");
        System.out.println(validation);
    }

}