diff --git a/src/service/request/index.ts b/src/service/request/index.ts index 477d397c..88ae1b91 100644 --- a/src/service/request/index.ts +++ b/src/service/request/index.ts @@ -65,22 +65,29 @@ export const request = createFlatRequest msg !== response.data.msg); } + const isLogin = Boolean(localStg.get('token')); + // when the backend response code is in `logoutCodes`, it means the user will be logged out and redirected to login page - // const logoutCodes = import.meta.env.VITE_SERVICE_LOGOUT_CODES?.split(',') || []; - // if (logoutCodes.includes(responseCode)) { - // handleLogout(); - // return null; - // } + const logoutCodes = import.meta.env.VITE_SERVICE_LOGOUT_CODES?.split(',') || []; + if (logoutCodes.includes(responseCode) && !isLogin) { + logoutAndCleanup(); + return null; + } // when the backend response code is in `modalLogoutCodes`, it means the user will be logged out by displaying a modal const modalLogoutCodes = import.meta.env.VITE_SERVICE_MODAL_LOGOUT_CODES?.split(',') || []; - if (modalLogoutCodes.includes(responseCode)) { - request.state.errMsgStack = [...(request.state.errMsgStack || []), response.data.msg]; - - // prevent the user from refreshing the page - window.addEventListener('beforeunload', handleLogout); + if (modalLogoutCodes.includes(responseCode) && isLogin) { + const isExist = request.state.errMsgStack.includes(response.data.msg); + if (isExist) { + return null; + } if (!window.location.pathname?.startsWith('/login')) { + request.state.errMsgStack = [...(request.state.errMsgStack || []), response.data.msg]; + + // prevent the user from refreshing the page + window.addEventListener('beforeunload', handleLogout); + window.$dialog?.warning({ title: '系统提示', content: '登录状态已过期,您可以继续留在该页面,或者重新登录', @@ -90,12 +97,16 @@ export const request = createFlatRequest msg !== response.data.msg); } }); - request.cancelAllRequest(); + return null; } - + logoutAndCleanup(); return null; }