From 154bd2ae145c2fbfe715b9b477339e3fedf058e1 Mon Sep 17 00:00:00 2001 From: bunny <1319900154@qq.com> Date: Fri, 27 Sep 2024 09:33:50 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=F0=9F=A7=A9=20=E7=94=A8=E6=88=B7?= =?UTF-8?q?=E9=80=80=E5=87=BA=E7=B3=BB=E7=BB=9F=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/service/index.ts | 13 +++++-------- src/api/v1/user.ts | 8 ++++++++ src/store/modules/user.ts | 24 ++++++++++++++++-------- src/utils/auth.ts | 2 +- 4 files changed, 30 insertions(+), 17 deletions(-) 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`字段进行判断)*/