fix: 登录失效时未弹出登录框

将 isRefreshToken = true 移到 getRefreshToken() 检查之后:
当本地无 refreshToken 时,提前 return handleAuthorized() 会绕过
finally 块,导致 isRefreshToken 永久卡在 true,后续所有 401
请求静默进入队列而不弹登录框。

修复 https://github.com/yudaocode/yudao-mall-uniapp/issues/38
master
YunaiV 2026-05-31 10:56:38 +08:00
parent d6f272ad75
commit 6587fb15c6
1 changed files with 2 additions and 1 deletions

View File

@ -230,12 +230,13 @@ const refreshToken = async (config) => {
// 如果未认证,并且未进行刷新令牌,说明可能是访问令牌过期了 // 如果未认证,并且未进行刷新令牌,说明可能是访问令牌过期了
if (!isRefreshToken) { if (!isRefreshToken) {
isRefreshToken = true;
// 1. 如果获取不到刷新令牌,则只能执行登出操作 // 1. 如果获取不到刷新令牌,则只能执行登出操作
const refreshToken = getRefreshToken(); const refreshToken = getRefreshToken();
if (!refreshToken) { if (!refreshToken) {
return handleAuthorized(); return handleAuthorized();
} }
// 只有真正发起刷新时才标记刷新中,避免无刷新令牌时状态一直卡住,后续 401 不再弹登录框
isRefreshToken = true;
// 2. 进行刷新访问令牌 // 2. 进行刷新访问令牌
try { try {
const refreshTokenResult = await AuthUtil.refreshToken(refreshToken); const refreshTokenResult = await AuthUtil.refreshToken(refreshToken);