feat(project-setting): added sessionTimeoutProcessing project configuration item,fix #772

This commit is contained in:
Vben 2021-06-17 23:39:27 +08:00
parent b6d5b0796d
commit 0d0708409c
5 changed files with 22 additions and 3 deletions

View File

@ -17,6 +17,7 @@
- **Setup** 新增引导页示例 - **Setup** 新增引导页示例
- **Tests** 添加 jest 测试套件,暂不支持 Vue 组件单测 - **Tests** 添加 jest 测试套件,暂不支持 Vue 组件单测
- **Axios** 新增`authenticationScheme`配置,用于指定认证方案 - **Axios** 新增`authenticationScheme`配置,用于指定认证方案
- **Setting** 新增 `sessionTimeoutProcessing` 项目配置项,用于配置会话超时如何处理
### 🐛 Bug Fixes ### 🐛 Bug Fixes

View File

@ -20,6 +20,11 @@ export enum SettingButtonPositionEnum {
FIXED = 'fixed', FIXED = 'fixed',
} }
export enum SessionTimeoutProcessingEnum {
ROUTE_JUMP,
PAGE_COVERAGE,
}
/** /**
* *
*/ */

View File

@ -7,6 +7,7 @@ import {
ThemeEnum, ThemeEnum,
RouterTransitionEnum, RouterTransitionEnum,
SettingButtonPositionEnum, SettingButtonPositionEnum,
SessionTimeoutProcessingEnum,
} from '/@/enums/appEnum'; } from '/@/enums/appEnum';
import { SIDE_BAR_BG_COLOR_LIST, HEADER_PRESET_BG_COLOR_LIST } from './designSetting'; import { SIDE_BAR_BG_COLOR_LIST, HEADER_PRESET_BG_COLOR_LIST } from './designSetting';
import { primaryColor } from '../../build/config/themeConfig'; import { primaryColor } from '../../build/config/themeConfig';
@ -28,6 +29,9 @@ const setting: ProjectConfig = {
// Permission-related cache is stored in sessionStorage or localStorage // Permission-related cache is stored in sessionStorage or localStorage
permissionCacheType: CacheTypeEnum.LOCAL, permissionCacheType: CacheTypeEnum.LOCAL,
// Session timeout processing
sessionTimeoutProcessing: SessionTimeoutProcessingEnum.ROUTE_JUMP,
// color // color
themeColor: primaryColor, themeColor: primaryColor,

View File

@ -4,10 +4,12 @@ import { useI18n } from '/@/hooks/web/useI18n';
// import router from '/@/router'; // import router from '/@/router';
// import { PageEnum } from '/@/enums/pageEnum'; // import { PageEnum } from '/@/enums/pageEnum';
import { useUserStoreWidthOut } from '/@/store/modules/user'; import { useUserStoreWidthOut } from '/@/store/modules/user';
import projectSetting from '/@/settings/projectSetting';
import { SessionTimeoutProcessingEnum } from '/@/enums/appEnum';
const { createMessage, createErrorModal } = useMessage(); const { createMessage, createErrorModal } = useMessage();
const error = createMessage.error!; const error = createMessage.error!;
const stp = projectSetting.sessionTimeoutProcessing;
export function checkStatus( export function checkStatus(
status: number, status: number,
@ -27,8 +29,12 @@ export function checkStatus(
// Return to the current page after successful login. This step needs to be operated on the login page. // Return to the current page after successful login. This step needs to be operated on the login page.
case 401: case 401:
errMessage = t('sys.api.errMsg401'); errMessage = t('sys.api.errMsg401');
userStore.setToken(undefined); if (stp === SessionTimeoutProcessingEnum.PAGE_COVERAGE) {
userStore.setSessionTimeout(true); userStore.setToken(undefined);
userStore.setSessionTimeout(true);
} else {
userStore.logout(true);
}
break; break;
case 403: case 403:
errMessage = t('sys.api.errMsg403'); errMessage = t('sys.api.errMsg403');

3
types/config.d.ts vendored
View File

@ -5,6 +5,7 @@ import {
ThemeEnum, ThemeEnum,
RouterTransitionEnum, RouterTransitionEnum,
SettingButtonPositionEnum, SettingButtonPositionEnum,
SessionTimeoutProcessingEnum,
} from '/@/enums/appEnum'; } from '/@/enums/appEnum';
import { CacheTypeEnum } from '/@/enums/cacheEnum'; import { CacheTypeEnum } from '/@/enums/cacheEnum';
@ -89,6 +90,8 @@ export interface ProjectConfig {
settingButtonPosition: SettingButtonPositionEnum; settingButtonPosition: SettingButtonPositionEnum;
// Permission mode // Permission mode
permissionMode: PermissionModeEnum; permissionMode: PermissionModeEnum;
// Session timeout processing
sessionTimeoutProcessing: SessionTimeoutProcessingEnum;
// Website gray mode, open for possible mourning dates // Website gray mode, open for possible mourning dates
grayMode: boolean; grayMode: boolean;
// Whether to turn on the color weak mode // Whether to turn on the color weak mode