From 323764c813a09cd56cdab780155ef659dbe0b364 Mon Sep 17 00:00:00 2001
From: liujie <1793218484@qq.com>
Date: 星期二, 11 八月 2026 15:08:03 +0800
Subject: [PATCH] update

---
 ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java |   33 +++++++++++++++++++++++++++++++++
 1 files changed, 33 insertions(+), 0 deletions(-)

diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java
index 206c1a4..6dd7b8d 100644
--- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java
+++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java
@@ -94,6 +94,7 @@
                 String uuid = (String) claims.get(Constants.LOGIN_USER_KEY);
                 String userKey = getTokenKey(uuid);
                 LoginUser user = redisCache.getCacheObject(userKey);
+                restoreMiddlePlatformToken(user, uuid);
                 return user;
             }
             catch (Exception e)
@@ -151,6 +152,7 @@
         {
             String userKey = getTokenKey(token);
             redisCache.deleteObject(userKey);
+            redisCache.deleteObject(getMiddlePlatformTokenKey(token));
         }
     }
 
@@ -240,6 +242,7 @@
         // 根据uuid将loginUser缓存
         String userKey = getTokenKey(loginUser.getToken());
         redisCache.setCacheObject(userKey, loginUser, expireTime, TimeUnit.MINUTES);
+        cacheMiddlePlatformToken(loginUser);
     }
     /**
      * 刷新令牌有效期
@@ -357,4 +360,34 @@
     {
         return CacheConstants.LOGIN_TOKEN_KEY + uuid;
     }
+
+    /**
+     * 目的:中台 Token 独立存储,避免因 LoginUser 的对外 JSON 脱敏规则而丢失认证信息。
+     */
+    private void cacheMiddlePlatformToken(LoginUser loginUser)
+    {
+        if (StringUtils.isNotEmpty(loginUser.getMiddlePlatformToken()))
+        {
+            redisCache.setCacheObject(getMiddlePlatformTokenKey(loginUser.getToken()),
+                    loginUser.getMiddlePlatformToken(), expireTime, TimeUnit.MINUTES);
+        }
+    }
+
+    /**
+     * 目的:从独立 Redis 键恢复中台 Token,供后续所有中台业务请求添加 Bearer 认证头。
+     */
+    private void restoreMiddlePlatformToken(LoginUser loginUser, String uuid)
+    {
+        if (loginUser == null || StringUtils.isEmpty(uuid))
+        {
+            return;
+        }
+        String middlePlatformToken = redisCache.getCacheObject(getMiddlePlatformTokenKey(uuid));
+        loginUser.setMiddlePlatformToken(middlePlatformToken);
+    }
+
+    private String getMiddlePlatformTokenKey(String uuid)
+    {
+        return CacheConstants.MIDDLE_PLATFORM_TOKEN_KEY + uuid;
+    }
 }

--
Gitblit v1.7.1