Browse Source

🎟 用户信息持久化

master
wangxiang 3 years ago
parent
commit
acd1689105
  1. 8
      kicc-ui/src/enums/cacheEnum.ts
  2. 28
      kicc-ui/src/store/modules/user.ts
  3. 4
      kicc-ui/src/utils/cache/persistent.ts
  4. 1
      kicc-ui/src/utils/http/axios/checkStatus.ts

8
kicc-ui/src/enums/cacheEnum.ts

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
/**
* @program: kicc-ui
* @description:
* @description:
* @author: entfrm开发团队-
* @create: 2022/4/9
*/
@ -10,6 +10,12 @@ export const ACCESS_TOKEN_KEY = 'ACCESS__TOKEN__'; @@ -10,6 +10,12 @@ export const ACCESS_TOKEN_KEY = 'ACCESS__TOKEN__';
// 刷新令牌密钥
export const REFRESH_TOKEN_KEY = 'REFRESH__TOKEN__';
// 按钮权限键
export const PERMISSIONS_KEY = 'PERMISSIONS__';
// 角色id键
export const ROLE_IDS_KEY = 'ROLE__IDS__';
// 国际化键
export const LOCALE_KEY = 'LOCALE__';

28
kicc-ui/src/store/modules/user.ts

@ -9,8 +9,8 @@ import type {UserInfo} from '/#/store'; @@ -9,8 +9,8 @@ import type {UserInfo} from '/#/store';
import {defineStore} from 'pinia';
import {store} from '/@/store';
import {PageEnum} from '/@/enums/pageEnum';
import {ACCESS_TOKEN_KEY, REFRESH_TOKEN_KEY, USER_INFO_KEY} from '/@/enums/cacheEnum';
import {setAuthCache} from '/@/utils/auth';
import {ACCESS_TOKEN_KEY, PERMISSIONS_KEY, REFRESH_TOKEN_KEY, ROLE_IDS_KEY, USER_INFO_KEY} from '/@/enums/cacheEnum';
import {getAuthCache, setAuthCache} from '/@/utils/auth';
import {GetUserInfoModel, LoginParams} from '/@/api/sys/model/userModel';
import {doLogout, getUserInfo, loginApi} from '/@/api/sys/user';
import {useI18n} from '/@/hooks/web/useI18n';
@ -24,35 +24,35 @@ interface UserState { @@ -24,35 +24,35 @@ interface UserState {
sessionTimeout: boolean;
roleIds: Recordable;
permissions: Recordable;
access_token: string;
refresh_token: string;
access_token?: string;
refresh_token?: string;
}
export const useUserStore = defineStore({
id: 'app-user',
state: (): UserState => ({
// 用户信息
userInfo: null,
userInfo: getAuthCache<UserInfo>(USER_INFO_KEY),
// 登录是否过期
sessionTimeout: false,
// 角色ID用于权限校验
roleIds: [],
roleIds: getAuthCache<Recordable>(ROLE_IDS_KEY),
// 按钮权限标识用于权限校验
permissions: [],
permissions: getAuthCache<Recordable>(PERMISSIONS_KEY),
// 访问令牌
access_token: '',
access_token: getAuthCache<string>(ACCESS_TOKEN_KEY),
// 刷新令牌
refresh_token: '',
refresh_token: getAuthCache<string>(REFRESH_TOKEN_KEY),
}),
getters: {
getUserInfo(): UserInfo | {[key: string]: any} {
return this.userInfo || {};
getUserInfo(): UserInfo {
return this.userInfo! || {};
},
getAccessToken(): string {
return this.access_token;
return this.access_token!;
},
getRefreshToken(): string {
return this.refresh_token;
return this.refresh_token!;
},
getSessionTimeout(): boolean {
return !!this.sessionTimeout;
@ -67,6 +67,7 @@ export const useUserStore = defineStore({ @@ -67,6 +67,7 @@ export const useUserStore = defineStore({
actions: {
setRoleIds(roleIds: Recordable) {
this.roleIds = roleIds;
setAuthCache(ROLE_IDS_KEY, roleIds);
},
setPermissions(permissions: Recordable) {
this.permissions = permissions;
@ -141,6 +142,7 @@ export const useUserStore = defineStore({ @@ -141,6 +142,7 @@ export const useUserStore = defineStore({
} catch {
console.log('注销Token失败');
}
debugger
this.setAccessToken('');
this.setRefreshToken('');
this.setSessionTimeout(false);

4
kicc-ui/src/utils/cache/persistent.ts vendored

@ -19,7 +19,7 @@ import { @@ -19,7 +19,7 @@ import {
PROJ_CFG_KEY,
APP_LOCAL_CACHE_KEY,
APP_SESSION_CACHE_KEY,
MULTIPLE_TABS_KEY, REFRESH_TOKEN_KEY,
MULTIPLE_TABS_KEY, REFRESH_TOKEN_KEY, ROLE_IDS_KEY, PERMISSIONS_KEY,
} from '/@/enums/cacheEnum';
import { DEFAULT_CACHE_TIME } from '/@/settings/encryptionSetting';
import { toRaw } from 'vue';
@ -28,6 +28,8 @@ import { pick, omit } from 'lodash-es'; @@ -28,6 +28,8 @@ import { pick, omit } from 'lodash-es';
interface BasicStore {
[ACCESS_TOKEN_KEY]: string | number | null | undefined;
[REFRESH_TOKEN_KEY]: string | number | null | undefined;
[ROLE_IDS_KEY]: Recordable;
[PERMISSIONS_KEY]: Recordable;
[USER_INFO_KEY]: UserInfo;
[LOCK_INFO_KEY]: LockInfo;
[PROJ_CFG_KEY]: ProjectConfig;

1
kicc-ui/src/utils/http/axios/checkStatus.ts

@ -31,6 +31,7 @@ export function checkStatus(status: number, msg: string, errorMessageMode: Error @@ -31,6 +31,7 @@ export function checkStatus(status: number, msg: string, errorMessageMode: Error
case 401:
errMessage = t('sys.api.errMsg401');
if (stp === SessionTimeoutProcessingEnum.PAGE_COVERAGE) {
debugger
userStore.setAccessToken('');
userStore.setRefreshToken('');
userStore.setSessionTimeout(true);

Loading…
Cancel
Save