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> {
|
||||
const config = {
|
||||
method,
|
||||
url,
|
||||
...param,
|
||||
...axiosConfig,
|
||||
} as PureHttpRequestConfig;
|
||||
const config = { method, url, ...param, ...axiosConfig } as PureHttpRequestConfig;
|
||||
|
||||
// 单独处理自定义请求/响应回调
|
||||
return new Promise((resolve, reject) => {
|
||||
|
@ -106,6 +101,7 @@ class PureHttp {
|
|||
? config
|
||||
: new Promise(resolve => {
|
||||
const data = getToken();
|
||||
// 存在token
|
||||
if (data) {
|
||||
const now = new Date().getTime();
|
||||
const expired = parseInt(data.expires) - now <= 0;
|
||||
|
@ -116,7 +112,8 @@ class PureHttp {
|
|||
useUserStoreHook()
|
||||
.handRefreshToken({ refreshToken: data.refreshToken })
|
||||
.then((res: any) => {
|
||||
const token = res.data.accessToken;
|
||||
// 从结果中获取token
|
||||
const token = res.data.token;
|
||||
config.headers['token'] = formatToken(token);
|
||||
PureHttp.requests.forEach(cb => cb(token));
|
||||
PureHttp.requests = [];
|
||||
|
@ -127,7 +124,7 @@ class PureHttp {
|
|||
}
|
||||
resolve(PureHttp.retryOriginalRequest(config));
|
||||
} else {
|
||||
config.headers['token'] = formatToken(data.accessToken);
|
||||
config.headers['token'] = formatToken(data.token);
|
||||
resolve(config);
|
||||
}
|
||||
} else {
|
||||
|
|
|
@ -48,3 +48,11 @@ export const fetchPostEmailCode = (data: any) => {
|
|||
export const refreshTokenApi = (data?: object) => {
|
||||
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 { 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 { type DataInfo, removeToken, setToken, userKey } from '@/utils/auth';
|
||||
import { message } from '@/utils/message';
|
||||
|
@ -57,13 +57,21 @@ export const useUserStore = defineStore({
|
|||
* 前端登出(不调用接口)
|
||||
*/
|
||||
async logOut() {
|
||||
// 登出
|
||||
const result = await fetchLogOut();
|
||||
if (result.code == 200) {
|
||||
this.username = '';
|
||||
this.roles = [];
|
||||
this.permissions = [];
|
||||
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格式) */
|
||||
export const formatToken = (token: string): string => {
|
||||
return 'Bearer ' + token;
|
||||
return token;
|
||||
};
|
||||
|
||||
/** 是否有按钮级别的权限(根据登录接口返回的`permissions`字段进行判断)*/
|
||||
|
|
Loading…
Reference in New Issue