From e71896d70b61d6c42da1bbd0bf79257d5d6899c2 Mon Sep 17 00:00:00 2001 From: wangxiang <1827945911@qq.com> Date: Sat, 2 Sep 2023 17:19:38 +0800 Subject: [PATCH] chore: sso expired --- src/utils/http/axios/checkStatus.ts | 26 ++++++++++++++++++-------- types/config.d.ts | 2 +- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/src/utils/http/axios/checkStatus.ts b/src/utils/http/axios/checkStatus.ts index 78774ae..6ab799d 100644 --- a/src/utils/http/axios/checkStatus.ts +++ b/src/utils/http/axios/checkStatus.ts @@ -11,11 +11,14 @@ import { useI18n } from '/@/hooks/web/useI18n'; import { useUserStoreWithOut } from '/@/store/modules/user'; import projectSetting from '/@/settings/projectSetting'; import { SessionTimeoutProcessingEnum } from '/@/enums/appEnum'; +import { logout } from '/@/api/platform/core/controller/user'; +import { AxiosResponse } from 'axios'; +import { ExceptionEnum } from '/@/enums/exceptionEnum'; const stp = projectSetting.sessionTimeoutProcessing; const { createMessage, createErrorModal } = useMessage(); -export function checkStatus(status: number, msg: string, errorMessageMode: ErrorMessageMode = 'message'): boolean { +export function checkStatus(status: number, msg: string, errorMessageMode: ErrorMessageMode = 'message', response: AxiosResponse): boolean { const { t } = useI18n(); const userStore = useUserStoreWithOut(); let errMessage = ''; @@ -41,15 +44,22 @@ export function checkStatus(status: number, msg: string, errorMessageMode: Error errMessage = t('sys.api.errMsg408'); break; case 424: - // token 过期特殊处理返回 424 不是 401 - errMessage = t('sys.api.errMsg424'); - if (stp === SessionTimeoutProcessingEnum.PAGE_COVERAGE) { - userStore.setAccessToken(''); - userStore.setSessionTimeout(true); + // 处理SSO用户未配置用户数据 + if (response.data.code === ExceptionEnum.PAGE_NOT_DATA) { + errMessage = t('sys.api.errMsg42401'); } else { - userStore.logout(true); + // token 过期特殊处理返回 424 不是 401 + errMessage = t('sys.api.errMsg424'); + if (stp === SessionTimeoutProcessingEnum.PAGE_COVERAGE) { + // 需要保证其他sso系统用户退出 + logout().then(() => { + userStore.setAccessToken(''); + userStore.setSessionTimeout(true); + }); + } else { + userStore.logout(true); + } } - userStore.logout(true); break; case 426: errMessage = t('sys.api.errMsg426'); diff --git a/types/config.d.ts b/types/config.d.ts index ae15c88..cfcd52c 100644 --- a/types/config.d.ts +++ b/types/config.d.ts @@ -93,7 +93,7 @@ export interface ProjectConfig { showDarkModeToggle: boolean; // 配置按钮的显示位置 settingButtonPosition: SettingButtonPositionEnum; - // Session timeout processing + // 会话超时处理 sessionTimeoutProcessing: SessionTimeoutProcessingEnum; // 网站灰色模式,打开可能的哀悼日期 grayMode: boolean;