From dc31792dc1b8ad1658e49ba8fce9a1be924e6fbb Mon Sep 17 00:00:00 2001
From: wu <731351411@qq.com>
Date: 星期四, 30 十一月 2023 08:44:04 +0800
Subject: [PATCH] 理片笼测试修改

---
 springboot-vue3/src/main/java/com/example/springboot/security/util/JwtUtil.java |   68 ++++++++++++++++++++++++++++++++++
 1 files changed, 68 insertions(+), 0 deletions(-)

diff --git a/springboot-vue3/src/main/java/com/example/springboot/security/util/JwtUtil.java b/springboot-vue3/src/main/java/com/example/springboot/security/util/JwtUtil.java
new file mode 100644
index 0000000..63d8f4e
--- /dev/null
+++ b/springboot-vue3/src/main/java/com/example/springboot/security/util/JwtUtil.java
@@ -0,0 +1,68 @@
+package com.example.springboot.security.util;
+
+import com.example.springboot.security.constant.SystemConstant;
+import io.jsonwebtoken.Claims;
+import io.jsonwebtoken.Jwts;
+import io.jsonwebtoken.SignatureAlgorithm;
+import io.jsonwebtoken.security.Keys;
+import lombok.Data;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import javax.crypto.SecretKey;
+import javax.xml.bind.DatatypeConverter;
+import java.util.Date;
+
+@Data
+@Component
+@Slf4j
+public class JwtUtil {
+    /**
+     * 鐢熸垚瓒冲鐨勫畨鍏ㄩ殢鏈哄瘑閽ワ紝浠ラ�傚悎绗﹀悎瑙勮寖鐨勭鍚�
+     */
+    private static byte[] apiKeySecretBytes = DatatypeConverter.parseBase64Binary(SystemConstant.JWT_SECRET_KEY);
+    private static SecretKey secretKey = Keys.hmacShaKeyFor(apiKeySecretBytes);
+
+    /**
+     * 鍒涘缓JWT
+     *
+     * @param subject      涓讳綋锛岀敤鎴峰悕
+     * @param isRememberMe 璁颁綇鎴�
+     * @return
+     */
+    public static String createToken(String subject, boolean isRememberMe) {
+        long expiration = isRememberMe ? SystemConstant.EXPIRATION_REMEMBER : SystemConstant.EXPIRATION;
+
+        String tokenPrefix = Jwts.builder()
+                .setHeaderParam("typ", SystemConstant.TOKEN_TYPE)
+                .signWith(secretKey, SignatureAlgorithm.HS256) // 璁剧疆鍔犲瘑鏂瑰紡
+                .setIssuer("Authority") // //绛惧彂鐨勪汉
+                .setIssuedAt(new Date()) // 绛惧彂鏃堕棿
+                .setSubject(subject) // 涓讳綋
+                .setExpiration(new Date(System.currentTimeMillis() + expiration * 1000)) // 鏈夋晥鏃堕棿
+                .compact();
+        return tokenPrefix;
+    }
+
+    public static boolean isTokenExpired(String token) {
+        Date expiredDate = getTokenBody(token).getExpiration();
+        return expiredDate.before(new Date());
+    }
+
+    public static String getUsernameByToken(String token) {
+        return getTokenBody(token).getSubject();
+    }
+
+    /**
+     * 瑙f瀽JWT
+     *
+     * @param token
+     * @return
+     */
+    private static Claims getTokenBody(String token) {
+        return Jwts.parser()
+                .setSigningKey(secretKey)
+                .parseClaimsJws(token)
+                .getBody();
+    }
+}
\ No newline at end of file

--
Gitblit v1.8.0