From c0af27c484532b8bdc1a6e9aef87fccfbf988b6a Mon Sep 17 00:00:00 2001
From: zhoushihao <zsh19950802@163.com>
Date: 星期四, 25 四月 2024 14:33:24 +0800
Subject: [PATCH] fixbug:token解析失败

---
 hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/JwtUtil.java |  121 +++++++++-------------------------------
 1 files changed, 28 insertions(+), 93 deletions(-)

diff --git a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/JwtUtil.java b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/JwtUtil.java
index 8c8f0d9..f7af90a 100644
--- a/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/JwtUtil.java
+++ b/hangzhoumesParent/common/springsecurity/src/main/java/com/mes/common/utils/JwtUtil.java
@@ -2,119 +2,54 @@
 
 
 import io.jsonwebtoken.Claims;
-import io.jsonwebtoken.JwtBuilder;
 import io.jsonwebtoken.Jwts;
 import io.jsonwebtoken.SignatureAlgorithm;
+import lombok.Data;
 
-import javax.crypto.SecretKey;
-import javax.crypto.spec.SecretKeySpec;
-import java.util.Base64;
 import java.util.Date;
-import java.util.UUID;
 
 /**
  * @Author : zhoush
  * @Date: 2024/4/9 19:15
  * @Description:
  */
+@Data
 public class JwtUtil {
 
-    //鏈夋晥鏈熶负
-    public static final Long JWT_TTL = 60 * 60 * 1000L;// 60 * 60 *1000  涓�涓皬鏃�
-    //璁剧疆绉橀挜鏄庢枃
-    public static final String JWT_KEY = "sangeng";
+    private static final long expire = 60 * 60 * 1000L;
+    private static final String secret = "beibo";
+    private static final String header = "Authorization";
 
-    public static String getUUID() {
-        String token = UUID.randomUUID().toString().replaceAll("-", "");
-        return token;
-    }
+    // 鐢熸垚jwt
+    public static String generateToken(String username) {
 
-    /**
-     * 鐢熸垚jtw
-     *
-     * @param subject token涓瀛樻斁鐨勬暟鎹紙json鏍煎紡锛�
-     * @return
-     */
-    public static String createJWT(String subject) {
-        JwtBuilder builder = getJwtBuilder(subject, null, getUUID());// 璁剧疆杩囨湡鏃堕棿
-        return builder.compact();
-    }
+        Date nowDate = new Date();
+        Date expireDate = new Date(nowDate.getTime() + 1000 * expire);
 
-    /**
-     * 鐢熸垚jtw
-     *
-     * @param subject   token涓瀛樻斁鐨勬暟鎹紙json鏍煎紡锛�
-     * @param ttlMillis token瓒呮椂鏃堕棿
-     * @return
-     */
-    public static String createJWT(String subject, Long ttlMillis) {
-        JwtBuilder builder = getJwtBuilder(subject, ttlMillis, getUUID());// 璁剧疆杩囨湡鏃堕棿
-        return builder.compact();
-    }
-
-    private static JwtBuilder getJwtBuilder(String subject, Long ttlMillis, String uuid) {
-        SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;
-        SecretKey secretKey = generalKey();
-        long nowMillis = System.currentTimeMillis();
-        Date now = new Date(nowMillis);
-        if (ttlMillis == null) {
-            ttlMillis = JwtUtil.JWT_TTL;
-        }
-        long expMillis = nowMillis + ttlMillis;
-        Date expDate = new Date(expMillis);
         return Jwts.builder()
-                .setId(uuid)              //鍞竴鐨処D
-                .setSubject(subject)   // 涓婚  鍙互鏄疛SON鏁版嵁
-                .setIssuer("sg")     // 绛惧彂鑰�
-                .setIssuedAt(now)      // 绛惧彂鏃堕棿
-                .signWith(signatureAlgorithm, secretKey) //浣跨敤HS256瀵圭О鍔犲瘑绠楁硶绛惧悕, 绗簩涓弬鏁颁负绉橀挜
-                .setExpiration(expDate);
+                .setHeaderParam("typ", "JWT")
+                .setSubject(username)
+                .setIssuedAt(nowDate)
+                .setExpiration(expireDate)// 7澶╅亷鏈�
+                .signWith(SignatureAlgorithm.HS512, secret)
+                .compact();
     }
 
-    /**
-     * 鍒涘缓token
-     *
-     * @param id
-     * @param subject
-     * @param ttlMillis
-     * @return
-     */
-    public static String createJWT(String id, String subject, Long ttlMillis) {
-        JwtBuilder builder = getJwtBuilder(subject, ttlMillis, id);// 璁剧疆杩囨湡鏃堕棿
-        return builder.compact();
+    // 瑙f瀽jwt
+    public static Claims getClaimByToken(String jwt) {
+        try {
+            return Jwts.parser()
+                    .setSigningKey(secret)
+                    .parseClaimsJws(jwt)
+                    .getBody();
+        } catch (Exception e) {
+            return null;
+        }
     }
 
-    public static void main(String[] args) throws Exception {
-        String token = "eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJjYWM2ZDVhZi1mNjVlLTQ0MDAtYjcxMi0zYWEwOGIyOTIwYjQiLCJzdWIiOiJzZyIsImlzcyI6InNnIiwiaWF0IjoxNjM4MTA2NzEyLCJleHAiOjE2MzgxMTAzMTJ9.JVsSbkP94wuczb4QryQbAke3ysBDIL5ou8fWsbt_ebg";
-        Claims claims = parseJWT(token);
-        System.out.println(claims);
+    // jwt鏄惁杩囨湡
+    public boolean isTokenExpired(Claims claims) {
+        return claims.getExpiration().before(new Date());
     }
-
-    /**
-     * 鐢熸垚鍔犲瘑鍚庣殑绉橀挜 secretKey
-     *
-     * @return
-     */
-    public static SecretKey generalKey() {
-        byte[] encodedKey = Base64.getDecoder().decode(JwtUtil.JWT_KEY);
-        SecretKey key = new SecretKeySpec(encodedKey, 0, encodedKey.length, "AES");
-        return key;
-    }
-
-    /**
-     * 瑙f瀽
-     *
-     * @param jwt
-     * @return
-     * @throws Exception
-     */
-    public static Claims parseJWT(String jwt) throws Exception {
-        SecretKey secretKey = generalKey();
-        return Jwts.parser()
-                .setSigningKey(secretKey)
-                .parseClaimsJws(jwt)
-                .getBody();
-    }
-
 
 }

--
Gitblit v1.8.0