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