Commit 0d0708409c4adbe7a0c5e33abf5307031147eaeb
1 parent
b6d5b079
feat(project-setting): added sessionTimeoutProcessing project configuration item,fix #772
Showing
5 changed files
with
22 additions
and
3 deletions
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 |