diff --git a/src/main/java/com/youlai/boot/core/security/token/JwtTokenManager.java b/src/main/java/com/youlai/boot/core/security/token/JwtTokenManager.java index fa331921..2f029eea 100644 --- a/src/main/java/com/youlai/boot/core/security/token/JwtTokenManager.java +++ b/src/main/java/com/youlai/boot/core/security/token/JwtTokenManager.java @@ -126,6 +126,12 @@ public class JwtTokenManager implements TokenManager { return isValid; } + @Override + public boolean validateRefreshToken(String refreshToken) { + // TODO 刷新令牌逻辑 + return false; + } + /** * 将令牌加入黑名单 * diff --git a/src/main/java/com/youlai/boot/core/security/token/RedisTokenManager.java b/src/main/java/com/youlai/boot/core/security/token/RedisTokenManager.java index 56efe7ea..dcb871f3 100644 --- a/src/main/java/com/youlai/boot/core/security/token/RedisTokenManager.java +++ b/src/main/java/com/youlai/boot/core/security/token/RedisTokenManager.java @@ -115,6 +115,17 @@ public class RedisTokenManager implements TokenManager { return redisTemplate.hasKey(formatTokenKey(token)); } + /** + * 校验 RefreshToken 是否有效 + * + * @param refreshToken 访问令牌 + * @return 是否有效 + */ + @Override + public boolean validateRefreshToken(String refreshToken) { + return redisTemplate.hasKey(formatRefreshTokenKey(refreshToken)); + } + /** * 刷新令牌 * @@ -255,6 +266,16 @@ public class RedisTokenManager implements TokenManager { return StrUtil.format(RedisConstants.Auth.ACCESS_TOKEN_USER, token); } + /** + * 格式化刷新令牌的 Redis 键 + * + * @param refreshToken 访问令牌 + * @return 格式化后的 Redis 键 + */ + private String formatRefreshTokenKey(String refreshToken) { + return StrUtil.format(RedisConstants.Auth.REFRESH_TOKEN_USER, refreshToken); + } + /** * 将值存储到 Redis * diff --git a/src/main/java/com/youlai/boot/core/security/token/TokenManager.java b/src/main/java/com/youlai/boot/core/security/token/TokenManager.java index e5ba39d0..bc722d2e 100644 --- a/src/main/java/com/youlai/boot/core/security/token/TokenManager.java +++ b/src/main/java/com/youlai/boot/core/security/token/TokenManager.java @@ -38,6 +38,14 @@ public interface TokenManager { */ boolean validateToken(String token); + /** + * 校验 刷新 Token 是否有效 + * + * @param refreshToken JWT Token + * @return 是否有效 + */ + boolean validateRefreshToken(String refreshToken); + /** * 刷新 Token * diff --git a/src/main/java/com/youlai/boot/shared/auth/service/impl/AuthServiceImpl.java b/src/main/java/com/youlai/boot/shared/auth/service/impl/AuthServiceImpl.java index 6bd2263e..d44b0c18 100644 --- a/src/main/java/com/youlai/boot/shared/auth/service/impl/AuthServiceImpl.java +++ b/src/main/java/com/youlai/boot/shared/auth/service/impl/AuthServiceImpl.java @@ -218,7 +218,7 @@ public class AuthServiceImpl implements AuthService { @Override public AuthenticationToken refreshToken(String refreshToken) { // 验证刷新令牌 - boolean isValidate = tokenManager.validateToken(refreshToken); + boolean isValidate = tokenManager.validateRefreshToken(refreshToken); if (!isValidate) { throw new BusinessException(ResultCode.REFRESH_TOKEN_INVALID);