diff --git a/src/main/java/com/ai/da/feign/gateway/GatewayFeignClient.java b/src/main/java/com/ai/da/feign/gateway/GatewayFeignClient.java index 03c2dc91..3ea37c42 100644 --- a/src/main/java/com/ai/da/feign/gateway/GatewayFeignClient.java +++ b/src/main/java/com/ai/da/feign/gateway/GatewayFeignClient.java @@ -18,4 +18,10 @@ public interface GatewayFeignClient { */ @PostMapping("/logout") Response logout(@RequestParam("userId") Long userId); + + /** + * 清除用户黑名单,允许该用户重新登录(登录时会自动调用)。 + */ + @PostMapping("/clear-blacklist") + Response clearBlacklist(@RequestParam("userId") Long userId); } diff --git a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java index 45bf2025..572c56ad 100644 --- a/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java +++ b/src/main/java/com/ai/da/service/impl/AccountServiceImpl.java @@ -366,6 +366,12 @@ public class AccountServiceImpl extends ServiceImpl impl // 同步写入 Redis,重启后仍然可用 long jwtExpiration = tokenGenerateUtils.getJwtExpiration(); redisUtil.setLoginToken(account.getId(), token2, jwtExpiration); + // 清除黑名单,允许用户重新登录(仅当黑名单功能开启时) + try { + gatewayFeignClient.clearBlacklist(account.getId()); + } catch (Exception e) { + log.warn("登录时清除黑名单失败,userId={}, error={}", account.getId(), e.getMessage()); + } return token2; }