From caa7c6698fb5cb4ba0c93b2e79f8f19eea38ec02 Mon Sep 17 00:00:00 2001 From: Jie Zheng <201507802@qq.com> Date: Thu, 19 Jun 2025 17:47:29 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20TokenProvider=E7=B1=BB=E4=B8=AD=E5=A4=8D?= =?UTF-8?q?=E7=94=A8JwtBuilder=E5=AE=9E=E4=BE=8B=E5=AF=BC=E8=87=B4?= =?UTF-8?q?=E5=B9=B6=E5=8F=91=E7=8E=AF=E5=A2=83=E4=B8=8BToken=E7=94=9F?= =?UTF-8?q?=E6=88=90=E9=94=99=E8=AF=AF=20close=20https://github.com/elunez?= =?UTF-8?q?/eladmin/issues/870?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../security/security/TokenProvider.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenProvider.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenProvider.java index 73659ca0..e1eb0c0e 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenProvider.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenProvider.java @@ -42,8 +42,8 @@ import java.util.concurrent.TimeUnit; @Component public class TokenProvider implements InitializingBean { + private Key signingKey; private JwtParser jwtParser; - private JwtBuilder jwtBuilder; private final RedisUtils redisUtils; private final SecurityProperties properties; public static final String AUTHORITIES_UUID_KEY = "uid"; @@ -56,13 +56,13 @@ public class TokenProvider implements InitializingBean { @Override public void afterPropertiesSet() { + // 解码Base64密钥并创建签名密钥 byte[] keyBytes = Decoders.BASE64.decode(properties.getBase64Secret()); - Key key = Keys.hmacShaKeyFor(keyBytes); + this.signingKey = Keys.hmacShaKeyFor(keyBytes); + // 初始化 JwtParser jwtParser = Jwts.parserBuilder() - .setSigningKey(key) + .setSigningKey(signingKey) // 使用预生成的签名密钥 .build(); - jwtBuilder = Jwts.builder() - .signWith(key, SignatureAlgorithm.HS512); } /** @@ -79,9 +79,14 @@ public class TokenProvider implements InitializingBean { claims.put(AUTHORITIES_UID_KEY, user.getUser().getId()); // 设置UUID,确保每次Token不一样 claims.put(AUTHORITIES_UUID_KEY, IdUtil.simpleUUID()); - return jwtBuilder + // 直接调用 Jwts.builder() 创建新实例 + return Jwts.builder() + // 设置自定义 Claims .setClaims(claims) + // 设置主题 .setSubject(user.getUsername()) + // 使用预生成的签名密钥和算法签名 + .signWith(signingKey, SignatureAlgorithm.HS512) .compact(); }