From 8fd573a07a51f508fcab5cddc36fed73947dd661 Mon Sep 17 00:00:00 2001
From: zhoushihao <zsh19950802@163.com>
Date: 星期四, 25 四月 2024 09:59:53 +0800
Subject: [PATCH] fixbug:权限功能实现用户重复登录异常
---
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 e50a758..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 = 5 * 60 * 1000L;// 60 * 60 *1000 涓�涓皬鏃�
- //璁剧疆绉橀挜鏄庢枃
- public static final String JWT_KEY = "beibo";
+ 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