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();
}
}
JwtUtils的工具類
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.