JwtUtils

package com.hwqh.huawenstockuser.utils.jwt;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.JwtBuilder;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import springfox.documentation.builders.BuilderDefaults;

import javax.xml.bind.DatatypeConverter;
import java.util.Date;

public class JwtUtils {
    private static final String secretKey = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9"; //進行數字簽名的私鑰,一定要保管好,不能和我一樣寫到博客中。。。。。

    /**
     * 一個JWT實際上就是一個字符串,它由三部分組成,頭部(Header)、載荷(Payload)與簽名(Signature)
     */
    public static void main(String[] args) throws Exception {

        //獲取系統的當前時間
    /*    long ttlMillis = System.currentTimeMillis();
        Date now = new Date(ttlMillis);*/

        //生成jwt令牌
       /* JwtBuilder jwtBuilder = Jwts.builder()
                .setId("66")//設置jwt編碼
                .setSubject("程序員")//設置jwt主題
                .setIssuedAt(new Date())//設置jwt簽發日期
                //.setExpiration(date)//設置jwt的過期時間
                .claim("t", "admin")
                .claim("company", "itheima")
                .signWith(SignatureAlgorithm.HS256, secretKey);

        //生成jwt
        String jwtToken = jwtBuilder.compact();
        System.out.println(jwtToken);*/
//        String s = acquireJWT("123456", "1", "123");
      /*  byte[] bytes = DatatypeConverter.parseBase64Binary(secretKey);
        //解析jwt,得到其內部的數據
        Claims claims = Jwts.parser().setSigningKey(bytes).parseClaimsJws(s).getBody();
        System.out.println(claims);

        Claims claims1 = parseJWT(s);
        System.out.println(claims1);*/
    }

    /**
     *生成串
     * @param token
     * @param id
     * @param account
     * @return
     * @throws Exception
     */
    public static String acquireJWT(String token,String id,String account,Integer uid)  {
        //生成jwt令牌
        JwtBuilder jwtBuilder = Jwts.builder()
                .setId(id)//設置jwt
                .setSubject("測試")//設置jwt主題
                .setIssuedAt(new Date())//設置jwt簽發日期
                //.setExpiration(date)//設置jwt的過期時間
                .claim("t", token)
                .claim("account", account)
                .claim("uid",uid)
//              .claim("company", "itheima")
                .signWith(SignatureAlgorithm.HS256, secretKey);
        return jwtBuilder.compact();
    }

    /**
     * 解析JWT字符串
     *
     * @param jwt
     * @return
     * @throws Exception
     */
    public static Claims parseJWT(String jwt) {
        return Jwts.parser()
                .setSigningKey(secretKey)
                .parseClaimsJws(jwt)
                .getBody();
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章