Commit 06b81430a4fb65545ee69c237f1f283aa54ab584
1 parent
967f69fc
feat(usr): jwtutil signRefresh REQ-USR-004
Showing
2 changed files
with
20 additions
and
2 deletions
backend/src/main/java/com/xly/erp/common/security/JwtUtil.java
| ... | ... | @@ -16,7 +16,8 @@ import java.util.Date; |
| 16 | 16 | @Component |
| 17 | 17 | public class JwtUtil { |
| 18 | 18 | |
| 19 | - private static final Duration TTL = Duration.ofHours(8); | |
| 19 | + public static final Duration ACCESS_TTL = Duration.ofHours(8); | |
| 20 | + public static final Duration REFRESH_TTL = Duration.ofDays(30); | |
| 20 | 21 | |
| 21 | 22 | private final SecretKey key; |
| 22 | 23 | |
| ... | ... | @@ -30,11 +31,19 @@ public class JwtUtil { |
| 30 | 31 | } |
| 31 | 32 | |
| 32 | 33 | public String sign(String userNo) { |
| 34 | + return sign(userNo, ACCESS_TTL); | |
| 35 | + } | |
| 36 | + | |
| 37 | + public String signRefresh(String userNo) { | |
| 38 | + return sign(userNo, REFRESH_TTL); | |
| 39 | + } | |
| 40 | + | |
| 41 | + public String sign(String userNo, Duration ttl) { | |
| 33 | 42 | Date now = new Date(); |
| 34 | 43 | return Jwts.builder() |
| 35 | 44 | .subject(userNo) |
| 36 | 45 | .issuedAt(now) |
| 37 | - .expiration(new Date(now.getTime() + TTL.toMillis())) | |
| 46 | + .expiration(new Date(now.getTime() + ttl.toMillis())) | |
| 38 | 47 | .signWith(key) |
| 39 | 48 | .compact(); |
| 40 | 49 | } | ... | ... |
backend/src/test/java/com/xly/erp/common/security/JwtUtilTest.java
| ... | ... | @@ -34,4 +34,13 @@ class JwtUtilTest { |
| 34 | 34 | .isInstanceOf(BizException.class) |
| 35 | 35 | .hasFieldOrPropertyWithValue("code", 20001); |
| 36 | 36 | } |
| 37 | + | |
| 38 | + @Test | |
| 39 | + void signRefresh_signsValidLongerLivedToken() { | |
| 40 | + String accessToken = jwtUtil.sign("U1"); | |
| 41 | + String refreshToken = jwtUtil.signRefresh("U1"); | |
| 42 | + assertThat(jwtUtil.parse(accessToken)).isEqualTo("U1"); | |
| 43 | + assertThat(jwtUtil.parse(refreshToken)).isEqualTo("U1"); | |
| 44 | + assertThat(refreshToken).isNotEqualTo(accessToken); | |
| 45 | + } | |
| 37 | 46 | } | ... | ... |