fix 修复 登录页后端403会出现多个弹窗问题

This commit is contained in:
疯狂的狮子Li 2026-06-11 13:17:19 +08:00
parent 565564a8a3
commit 9bcb8a9f27
2 changed files with 17 additions and 2 deletions

View File

@ -26,6 +26,18 @@ export interface RequestConfig<D = unknown> extends AxiosRequestConfig<D> {
export const isRelogin = { show: false };
type HandledRequestError = Error & { isHandled?: boolean };
function createHandledError(message: string) {
const error = new Error(message) as HandledRequestError;
error.isHandled = true;
return error;
}
export function isHandledRequestError(error: unknown) {
return Boolean((error as { isHandled?: boolean } | undefined)?.isHandled);
}
export function globalHeaders() {
return {
Authorization: `Bearer ${getToken() || ''}`,
@ -196,7 +208,7 @@ service.interceptors.response.use(
}
});
}
return Promise.reject(new Error('无效的会话,或者会话已过期,请重新登录。'));
return Promise.reject(createHandledError('无效的会话,或者会话已过期,请重新登录。'));
}
if (code === SERVER_ERROR || code === WARN || code !== SUCCESS) {

View File

@ -10,6 +10,7 @@ import dayjs from 'dayjs';
import { useEffect, useLayoutEffect, useMemo, useRef, useState } from 'react';
import type { RuntimeMenuItem } from '@/api/types';
import { logout } from '@/api/login';
import { isHandledRequestError } from '@/api/request';
import defaultAvatar from '@/assets/images/profile.jpg';
import appLogo from '@/assets/logo/logo.png';
import ExternalLinkButton from '@/components/layout/ExternalLinkButton';
@ -81,7 +82,9 @@ export default function BasicLayout() {
}
})
.catch(error => {
message.error(error.message || '加载用户信息失败');
if (!isHandledRequestError(error)) {
message.error(error.message || '加载用户信息失败');
}
closePush();
pushStartedRef.current = false;
removeToken();