From 6587fb15c6c3d75c5459edf005b110e7e0138e4b Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sun, 31 May 2026 10:56:38 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E7=99=BB=E5=BD=95=E5=A4=B1=E6=95=88?= =?UTF-8?q?=E6=97=B6=E6=9C=AA=E5=BC=B9=E5=87=BA=E7=99=BB=E5=BD=95=E6=A1=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 将 isRefreshToken = true 移到 getRefreshToken() 检查之后: 当本地无 refreshToken 时,提前 return handleAuthorized() 会绕过 finally 块,导致 isRefreshToken 永久卡在 true,后续所有 401 请求静默进入队列而不弹登录框。 修复 https://github.com/yudaocode/yudao-mall-uniapp/issues/38 --- sheep/request/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sheep/request/index.js b/sheep/request/index.js index f0fa1e19..d7d4130d 100644 --- a/sheep/request/index.js +++ b/sheep/request/index.js @@ -230,12 +230,13 @@ const refreshToken = async (config) => { // 如果未认证,并且未进行刷新令牌,说明可能是访问令牌过期了 if (!isRefreshToken) { - isRefreshToken = true; // 1. 如果获取不到刷新令牌,则只能执行登出操作 const refreshToken = getRefreshToken(); if (!refreshToken) { return handleAuthorized(); } + // 只有真正发起刷新时才标记刷新中,避免无刷新令牌时状态一直卡住,后续 401 不再弹登录框 + isRefreshToken = true; // 2. 进行刷新访问令牌 try { const refreshTokenResult = await AuthUtil.refreshToken(refreshToken);