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