diff --git a/src/api/service/index.ts b/src/api/service/index.ts index bdb4bf1..9b8389b 100644 --- a/src/api/service/index.ts +++ b/src/api/service/index.ts @@ -55,12 +55,7 @@ class PureHttp { /** 通用请求工具函数 */ public request(method: RequestMethods, url: string, param?: AxiosRequestConfig, axiosConfig?: PureHttpRequestConfig): Promise { - 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 { diff --git a/src/api/v1/user.ts b/src/api/v1/user.ts index b350818..c3bc3f5 100644 --- a/src/api/v1/user.ts +++ b/src/api/v1/user.ts @@ -48,3 +48,11 @@ export const fetchPostEmailCode = (data: any) => { export const refreshTokenApi = (data?: object) => { return http.request>('post', 'user/noAuth/refreshToken', { data }); }; + +/** + * * 退出内容 + * @param data + */ +export const fetchLogOut = (data?: object) => { + return http.request>('post', 'user/logOut', { data }); +}; diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts index fe050aa..0679b98 100644 --- a/src/store/modules/user.ts +++ b/src/store/modules/user.ts @@ -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() { - this.username = ''; - this.roles = []; - this.permissions = []; - removeToken(); - useMultiTagsStoreHook().handleTags('equal', [...routerArrays]); - resetRouter(); - await router.push('/login'); + // 登出 + 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' }); }, /** diff --git a/src/utils/auth.ts b/src/utils/auth.ts index 5549ea8..c218bb0 100644 --- a/src/utils/auth.ts +++ b/src/utils/auth.ts @@ -93,7 +93,7 @@ export function removeToken() { /** 格式化token(jwt格式) */ export const formatToken = (token: string): string => { - return 'Bearer ' + token; + return token; }; /** 是否有按钮级别的权限(根据登录接口返回的`permissions`字段进行判断)*/