From 06b81430a4fb65545ee69c237f1f283aa54ab584 Mon Sep 17 00:00:00 2001 From: zichun Date: Thu, 30 Apr 2026 14:50:10 +0800 Subject: [PATCH] feat(usr): jwtutil signRefresh REQ-USR-004 --- backend/src/main/java/com/xly/erp/common/security/JwtUtil.java | 13 +++++++++++-- backend/src/test/java/com/xly/erp/common/security/JwtUtilTest.java | 9 +++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/backend/src/main/java/com/xly/erp/common/security/JwtUtil.java b/backend/src/main/java/com/xly/erp/common/security/JwtUtil.java index 45c8638..42a3cce 100644 --- a/backend/src/main/java/com/xly/erp/common/security/JwtUtil.java +++ b/backend/src/main/java/com/xly/erp/common/security/JwtUtil.java @@ -16,7 +16,8 @@ import java.util.Date; @Component public class JwtUtil { - private static final Duration TTL = Duration.ofHours(8); + public static final Duration ACCESS_TTL = Duration.ofHours(8); + public static final Duration REFRESH_TTL = Duration.ofDays(30); private final SecretKey key; @@ -30,11 +31,19 @@ public class JwtUtil { } public String sign(String userNo) { + return sign(userNo, ACCESS_TTL); + } + + public String signRefresh(String userNo) { + return sign(userNo, REFRESH_TTL); + } + + public String sign(String userNo, Duration ttl) { Date now = new Date(); return Jwts.builder() .subject(userNo) .issuedAt(now) - .expiration(new Date(now.getTime() + TTL.toMillis())) + .expiration(new Date(now.getTime() + ttl.toMillis())) .signWith(key) .compact(); } diff --git a/backend/src/test/java/com/xly/erp/common/security/JwtUtilTest.java b/backend/src/test/java/com/xly/erp/common/security/JwtUtilTest.java index 7748aed..1c95856 100644 --- a/backend/src/test/java/com/xly/erp/common/security/JwtUtilTest.java +++ b/backend/src/test/java/com/xly/erp/common/security/JwtUtilTest.java @@ -34,4 +34,13 @@ class JwtUtilTest { .isInstanceOf(BizException.class) .hasFieldOrPropertyWithValue("code", 20001); } + + @Test + void signRefresh_signsValidLongerLivedToken() { + String accessToken = jwtUtil.sign("U1"); + String refreshToken = jwtUtil.signRefresh("U1"); + assertThat(jwtUtil.parse(accessToken)).isEqualTo("U1"); + assertThat(jwtUtil.parse(refreshToken)).isEqualTo("U1"); + assertThat(refreshToken).isNotEqualTo(accessToken); + } } -- libgit2 0.22.2