Commit 0d0708409c4adbe7a0c5e33abf5307031147eaeb

Authored by Vben
1 parent b6d5b079

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

CHANGELOG.zh_CN.md
@@ -17,6 +17,7 @@ @@ -17,6 +17,7 @@
17 - **Setup** 新增引导页示例 17 - **Setup** 新增引导页示例
18 - **Tests** 添加 jest 测试套件,暂不支持 Vue 组件单测 18 - **Tests** 添加 jest 测试套件,暂不支持 Vue 组件单测
19 - **Axios** 新增`authenticationScheme`配置,用于指定认证方案 19 - **Axios** 新增`authenticationScheme`配置,用于指定认证方案
  20 +- **Setting** 新增 `sessionTimeoutProcessing` 项目配置项,用于配置会话超时如何处理
20 21
21 ### 🐛 Bug Fixes 22 ### 🐛 Bug Fixes
22 23
src/enums/appEnum.ts
@@ -20,6 +20,11 @@ export enum SettingButtonPositionEnum { @@ -20,6 +20,11 @@ export enum SettingButtonPositionEnum {
20 FIXED = 'fixed', 20 FIXED = 'fixed',
21 } 21 }
22 22
  23 +export enum SessionTimeoutProcessingEnum {
  24 + ROUTE_JUMP,
  25 + PAGE_COVERAGE,
  26 +}
  27 +
23 /** 28 /**
24 * 权限模式 29 * 权限模式
25 */ 30 */
src/settings/projectSetting.ts
@@ -7,6 +7,7 @@ import { @@ -7,6 +7,7 @@ import {
7 ThemeEnum, 7 ThemeEnum,
8 RouterTransitionEnum, 8 RouterTransitionEnum,
9 SettingButtonPositionEnum, 9 SettingButtonPositionEnum,
  10 + SessionTimeoutProcessingEnum,
10 } from '/@/enums/appEnum'; 11 } from '/@/enums/appEnum';
11 import { SIDE_BAR_BG_COLOR_LIST, HEADER_PRESET_BG_COLOR_LIST } from './designSetting'; 12 import { SIDE_BAR_BG_COLOR_LIST, HEADER_PRESET_BG_COLOR_LIST } from './designSetting';
12 import { primaryColor } from '../../build/config/themeConfig'; 13 import { primaryColor } from '../../build/config/themeConfig';
@@ -28,6 +29,9 @@ const setting: ProjectConfig = { @@ -28,6 +29,9 @@ const setting: ProjectConfig = {
28 // Permission-related cache is stored in sessionStorage or localStorage 29 // Permission-related cache is stored in sessionStorage or localStorage
29 permissionCacheType: CacheTypeEnum.LOCAL, 30 permissionCacheType: CacheTypeEnum.LOCAL,
30 31
  32 + // Session timeout processing
  33 + sessionTimeoutProcessing: SessionTimeoutProcessingEnum.ROUTE_JUMP,
  34 +
31 // color 35 // color
32 themeColor: primaryColor, 36 themeColor: primaryColor,
33 37
src/utils/http/axios/checkStatus.ts
@@ -4,10 +4,12 @@ import { useI18n } from '/@/hooks/web/useI18n'; @@ -4,10 +4,12 @@ import { useI18n } from '/@/hooks/web/useI18n';
4 // import router from '/@/router'; 4 // import router from '/@/router';
5 // import { PageEnum } from '/@/enums/pageEnum'; 5 // import { PageEnum } from '/@/enums/pageEnum';
6 import { useUserStoreWidthOut } from '/@/store/modules/user'; 6 import { useUserStoreWidthOut } from '/@/store/modules/user';
  7 +import projectSetting from '/@/settings/projectSetting';
  8 +import { SessionTimeoutProcessingEnum } from '/@/enums/appEnum';
7 9
8 const { createMessage, createErrorModal } = useMessage(); 10 const { createMessage, createErrorModal } = useMessage();
9 -  
10 const error = createMessage.error!; 11 const error = createMessage.error!;
  12 +const stp = projectSetting.sessionTimeoutProcessing;
11 13
12 export function checkStatus( 14 export function checkStatus(
13 status: number, 15 status: number,
@@ -27,8 +29,12 @@ export function checkStatus( @@ -27,8 +29,12 @@ export function checkStatus(
27 // Return to the current page after successful login. This step needs to be operated on the login page. 29 // Return to the current page after successful login. This step needs to be operated on the login page.
28 case 401: 30 case 401:
29 errMessage = t('sys.api.errMsg401'); 31 errMessage = t('sys.api.errMsg401');
30 - userStore.setToken(undefined);  
31 - userStore.setSessionTimeout(true); 32 + if (stp === SessionTimeoutProcessingEnum.PAGE_COVERAGE) {
  33 + userStore.setToken(undefined);
  34 + userStore.setSessionTimeout(true);
  35 + } else {
  36 + userStore.logout(true);
  37 + }
32 break; 38 break;
33 case 403: 39 case 403:
34 errMessage = t('sys.api.errMsg403'); 40 errMessage = t('sys.api.errMsg403');
types/config.d.ts
@@ -5,6 +5,7 @@ import { @@ -5,6 +5,7 @@ import {
5 ThemeEnum, 5 ThemeEnum,
6 RouterTransitionEnum, 6 RouterTransitionEnum,
7 SettingButtonPositionEnum, 7 SettingButtonPositionEnum,
  8 + SessionTimeoutProcessingEnum,
8 } from '/@/enums/appEnum'; 9 } from '/@/enums/appEnum';
9 10
10 import { CacheTypeEnum } from '/@/enums/cacheEnum'; 11 import { CacheTypeEnum } from '/@/enums/cacheEnum';
@@ -89,6 +90,8 @@ export interface ProjectConfig { @@ -89,6 +90,8 @@ export interface ProjectConfig {
89 settingButtonPosition: SettingButtonPositionEnum; 90 settingButtonPosition: SettingButtonPositionEnum;
90 // Permission mode 91 // Permission mode
91 permissionMode: PermissionModeEnum; 92 permissionMode: PermissionModeEnum;
  93 + // Session timeout processing
  94 + sessionTimeoutProcessing: SessionTimeoutProcessingEnum;
92 // Website gray mode, open for possible mourning dates 95 // Website gray mode, open for possible mourning dates
93 grayMode: boolean; 96 grayMode: boolean;
94 // Whether to turn on the color weak mode 97 // Whether to turn on the color weak mode