From c2e8526f8f857be5e3a8c6f2b39c5efd424de33e Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期四, 15 十月 2026 11:50:24 +0800
Subject: [PATCH] refactor(auth): 优化认证逻辑和界面组件结构

---
 src/packages/effects/request/src/request-client/preset-interceptors.ts |   13 +++++++------
 1 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/src/packages/effects/request/src/request-client/preset-interceptors.ts b/src/packages/effects/request/src/request-client/preset-interceptors.ts
index 97bb8cb..7e168e2 100644
--- a/src/packages/effects/request/src/request-client/preset-interceptors.ts
+++ b/src/packages/effects/request/src/request-client/preset-interceptors.ts
@@ -52,7 +52,7 @@
   formatToken,
 }: {
   client: RequestClient;
-  doReAuthenticate: () => Promise<void>;
+  doReAuthenticate: (error?: any) => Promise<void>;
   doRefreshToken: () => Promise<string>;
   enableRefreshToken: boolean;
   formatToken: (token: string) => null | string;
@@ -67,13 +67,14 @@
       // 鍒ゆ柇鏄惁鍚敤浜� refreshToken 鍔熻兘
       // 濡傛灉娌℃湁鍚敤鎴栬�呭凡缁忔槸閲嶈瘯璇锋眰浜嗭紝鐩存帴璺宠浆鍒伴噸鏂扮櫥褰�
       if (!enableRefreshToken || config.__isRetryRequest) {
-        await doReAuthenticate();
+        await doReAuthenticate(error);
         throw error;
       }
       // 濡傛灉姝e湪鍒锋柊 token锛屽垯灏嗚姹傚姞鍏ラ槦鍒楋紝绛夊緟鍒锋柊瀹屾垚
       if (client.isRefreshing) {
-        return new Promise((resolve) => {
-          client.refreshTokenQueue.push((newToken: string) => {
+        return new Promise((resolve, reject) => {
+          client.refreshTokenQueue.push((newToken: string, refreshError?: unknown) => {
+            if (refreshError) { reject(refreshError); return; }
             config.headers.Authorization = formatToken(newToken);
             resolve(client.request(config.url, { ...config }));
           });
@@ -96,10 +97,10 @@
         return client.request(error.config.url, { ...error.config });
       } catch (refreshError) {
         // 濡傛灉鍒锋柊 token 澶辫触锛屽鐞嗛敊璇紙濡傚己鍒剁櫥鍑烘垨璺宠浆鐧诲綍椤甸潰锛�
-        client.refreshTokenQueue.forEach((callback) => callback(''));
+        client.refreshTokenQueue.forEach((callback) => callback('', refreshError));
         client.refreshTokenQueue = [];
         console.error('Refresh token failed, please login again.');
-        await doReAuthenticate();
+        await doReAuthenticate(error);
 
         throw refreshError;
       } finally {

--
Gitblit v1.9.3