fix: 🧩 用户退出系统完成
This commit is contained in:
parent
50af6bbec9
commit
154bd2ae14
|
@ -55,12 +55,7 @@ class PureHttp {
|
||||||
|
|
||||||
/** 通用请求工具函数 */
|
/** 通用请求工具函数 */
|
||||||
public request<T>(method: RequestMethods, url: string, param?: AxiosRequestConfig, axiosConfig?: PureHttpRequestConfig): Promise<T> {
|
public request<T>(method: RequestMethods, url: string, param?: AxiosRequestConfig, axiosConfig?: PureHttpRequestConfig): Promise<T> {
|
||||||
const config = {
|
const config = { method, url, ...param, ...axiosConfig } as PureHttpRequestConfig;
|
||||||
method,
|
|
||||||
url,
|
|
||||||
...param,
|
|
||||||
...axiosConfig,
|
|
||||||
} as PureHttpRequestConfig;
|
|
||||||
|
|
||||||
// 单独处理自定义请求/响应回调
|
// 单独处理自定义请求/响应回调
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
|
@ -106,6 +101,7 @@ class PureHttp {
|
||||||
? config
|
? config
|
||||||
: new Promise(resolve => {
|
: new Promise(resolve => {
|
||||||
const data = getToken();
|
const data = getToken();
|
||||||
|
// 存在token
|
||||||
if (data) {
|
if (data) {
|
||||||
const now = new Date().getTime();
|
const now = new Date().getTime();
|
||||||
const expired = parseInt(data.expires) - now <= 0;
|
const expired = parseInt(data.expires) - now <= 0;
|
||||||
|
@ -116,7 +112,8 @@ class PureHttp {
|
||||||
useUserStoreHook()
|
useUserStoreHook()
|
||||||
.handRefreshToken({ refreshToken: data.refreshToken })
|
.handRefreshToken({ refreshToken: data.refreshToken })
|
||||||
.then((res: any) => {
|
.then((res: any) => {
|
||||||
const token = res.data.accessToken;
|
// 从结果中获取token
|
||||||
|
const token = res.data.token;
|
||||||
config.headers['token'] = formatToken(token);
|
config.headers['token'] = formatToken(token);
|
||||||
PureHttp.requests.forEach(cb => cb(token));
|
PureHttp.requests.forEach(cb => cb(token));
|
||||||
PureHttp.requests = [];
|
PureHttp.requests = [];
|
||||||
|
@ -127,7 +124,7 @@ class PureHttp {
|
||||||
}
|
}
|
||||||
resolve(PureHttp.retryOriginalRequest(config));
|
resolve(PureHttp.retryOriginalRequest(config));
|
||||||
} else {
|
} else {
|
||||||
config.headers['token'] = formatToken(data.accessToken);
|
config.headers['token'] = formatToken(data.token);
|
||||||
resolve(config);
|
resolve(config);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -48,3 +48,11 @@ export const fetchPostEmailCode = (data: any) => {
|
||||||
export const refreshTokenApi = (data?: object) => {
|
export const refreshTokenApi = (data?: object) => {
|
||||||
return http.request<BaseResult<RefreshTokenResult>>('post', 'user/noAuth/refreshToken', { data });
|
return http.request<BaseResult<RefreshTokenResult>>('post', 'user/noAuth/refreshToken', { data });
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* * 退出内容
|
||||||
|
* @param data
|
||||||
|
*/
|
||||||
|
export const fetchLogOut = (data?: object) => {
|
||||||
|
return http.request<BaseResult<any>>('post', 'user/logOut', { data });
|
||||||
|
};
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
import { defineStore } from 'pinia';
|
import { defineStore } from 'pinia';
|
||||||
import { resetRouter, router, routerArrays, storageLocal, store, type userType } from '../utils';
|
import { resetRouter, router, routerArrays, storageLocal, store, type userType } from '../utils';
|
||||||
import { fetchLogin, fetchPostEmailCode, refreshTokenApi } from '@/api/v1/user';
|
import { fetchLogin, fetchLogOut, fetchPostEmailCode, refreshTokenApi } from '@/api/v1/user';
|
||||||
import { useMultiTagsStoreHook } from './multiTags';
|
import { useMultiTagsStoreHook } from './multiTags';
|
||||||
import { type DataInfo, removeToken, setToken, userKey } from '@/utils/auth';
|
import { type DataInfo, removeToken, setToken, userKey } from '@/utils/auth';
|
||||||
import { message } from '@/utils/message';
|
import { message } from '@/utils/message';
|
||||||
|
@ -57,13 +57,21 @@ export const useUserStore = defineStore({
|
||||||
* 前端登出(不调用接口)
|
* 前端登出(不调用接口)
|
||||||
*/
|
*/
|
||||||
async logOut() {
|
async logOut() {
|
||||||
this.username = '';
|
// 登出
|
||||||
this.roles = [];
|
const result = await fetchLogOut();
|
||||||
this.permissions = [];
|
if (result.code == 200) {
|
||||||
removeToken();
|
this.username = '';
|
||||||
useMultiTagsStoreHook().handleTags('equal', [...routerArrays]);
|
this.roles = [];
|
||||||
resetRouter();
|
this.permissions = [];
|
||||||
await router.push('/login');
|
removeToken();
|
||||||
|
useMultiTagsStoreHook().handleTags('equal', [...routerArrays]);
|
||||||
|
resetRouter();
|
||||||
|
message(result.message, { type: 'success' });
|
||||||
|
await router.push('/login');
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
message(result.message, { type: 'error' });
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -93,7 +93,7 @@ export function removeToken() {
|
||||||
|
|
||||||
/** 格式化token(jwt格式) */
|
/** 格式化token(jwt格式) */
|
||||||
export const formatToken = (token: string): string => {
|
export const formatToken = (token: string): string => {
|
||||||
return 'Bearer ' + token;
|
return token;
|
||||||
};
|
};
|
||||||
|
|
||||||
/** 是否有按钮级别的权限(根据登录接口返回的`permissions`字段进行判断)*/
|
/** 是否有按钮级别的权限(根据登录接口返回的`permissions`字段进行判断)*/
|
||||||
|
|
Loading…
Reference in New Issue