From af67ad6147800468ab2b101c5a4cc361cb1fd35b Mon Sep 17 00:00:00 2001
From: zyj <zyj@local>
Date: 星期日, 13 九月 2026 23:39:44 +0800
Subject: [PATCH] docs(工作日结): 补记 2026-09-13 《运距异常分析》分析报告(出版)重写与文件误覆盖恢复
---
traffic-audit-server/src/main/java/com/trafficaudit/security/utils/JwtUtils.java | 26 +++++++++++++++++++++++---
1 files changed, 23 insertions(+), 3 deletions(-)
diff --git a/traffic-audit-server/src/main/java/com/trafficaudit/security/utils/JwtUtils.java b/traffic-audit-server/src/main/java/com/trafficaudit/security/utils/JwtUtils.java
index 1b8baa2..214ca79 100644
--- a/traffic-audit-server/src/main/java/com/trafficaudit/security/utils/JwtUtils.java
+++ b/traffic-audit-server/src/main/java/com/trafficaudit/security/utils/JwtUtils.java
@@ -3,9 +3,13 @@
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
+import io.jsonwebtoken.impl.TextCodec;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
+import java.nio.charset.StandardCharsets;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@@ -13,11 +17,27 @@
@Component
public class JwtUtils {
+ private static final Logger log = LoggerFactory.getLogger(JwtUtils.class);
+
@Value("${jwt.secret}")
private String secret;
@Value("${jwt.expiration}")
private Long expiration;
+
+ /**
+ * 绛惧悕瀵嗛挜瀛楄妭锛歫jwt 0.9.x 榛樿鎶� secret 褰� Base64 瑙g爜锛岃嫢閰嶇疆鎴愪腑鏂囩瓑闈炴硶 Base64 浼氬湪鐧诲綍鏃舵姏
+ * ArrayIndexOutOfBoundsException锛岃〃鐜颁负銆岀櫥褰曟帴鍙� 500銆嶃�傝繖閲屽仛鍏滃簳锛氳兘鎸� Base64 瑙g爜灏辩敤瑙g爜缁撴灉
+ * 锛堜笌鍘嗗彶 token 鍏煎锛夛紝鍚﹀垯鎸� UTF-8 瀛楄妭澶勭悊锛屽苟鎶婃彁绀烘墦鍒版棩蹇楅噷銆�
+ */
+ private byte[] secretKeyBytes() {
+ try {
+ return TextCodec.BASE64.decode(secret);
+ } catch (Exception e) {
+ log.warn("jwt.secret 涓嶆槸鍚堟硶鐨� Base64 瀛楃涓诧紝宸叉寜 UTF-8 瀛楄妭浣滀负绛惧悕瀵嗛挜锛涘缓璁敼鎴� 32 浣嶉殢鏈哄崄鍏繘鍒朵覆銆�");
+ return secret.getBytes(StandardCharsets.UTF_8);
+ }
+ }
public String generateToken(String username) {
Map<String, Object> claims = new HashMap<>();
@@ -27,19 +47,19 @@
.setSubject(username)
.setIssuedAt(new Date())
.setExpiration(new Date(System.currentTimeMillis() + expiration))
- .signWith(SignatureAlgorithm.HS256, secret)
+ .signWith(SignatureAlgorithm.HS256, secretKeyBytes())
.compact();
}
public String getUsernameFromToken(String token) {
- Claims claims = Jwts.parser().setSigningKey(secret)
+ Claims claims = Jwts.parser().setSigningKey(secretKeyBytes())
.parseClaimsJws(token).getBody();
return claims.getSubject();
}
public boolean validateToken(String token) {
try {
- Jwts.parser().setSigningKey(secret).parseClaimsJws(token);
+ Jwts.parser().setSigningKey(secretKeyBytes()).parseClaimsJws(token);
return true;
} catch (Exception e) {
return false;
--
Gitblit v1.9.1