From e5d8f0f8112a0244204e7aa544ac0902fa112848 Mon Sep 17 00:00:00 2001 From: zhengyiming <540361168@qq.com> Date: 星期四, 07 八月 2025 18:06:12 +0800 Subject: [PATCH] fix: 修改 --- src/utils/request/index.ts | 68 +++++++++++++++------------------- 1 files changed, 30 insertions(+), 38 deletions(-) diff --git a/src/utils/request/index.ts b/src/utils/request/index.ts index 3ebb819..e4d4068 100644 --- a/src/utils/request/index.ts +++ b/src/utils/request/index.ts @@ -3,7 +3,6 @@ import qs from 'qs'; import NProgress from '../progress'; import { loadEnv } from '@build/index'; -import { getToken, getUserInfo } from '../storage'; import { useUserStoreHook } from '@/store/modules/user'; import { ElLoading as Loading, ElNotification } from 'element-plus'; import { router } from '@/router'; @@ -15,7 +14,7 @@ const RefreshTokenUrl = '/GetTokenByRefreshToken'; /** 璇锋眰鐧藉悕鍗曪紝鏀剧疆涓�浜涗笉闇�瑕乼oken鐨勬帴鍙o紙閫氳繃璁剧疆璇锋眰鐧藉悕鍗曪紝闃叉token杩囨湡鍚庡啀璇锋眰閫犳垚鐨勬寰幆闂锛� */ -const whiteList = [RefreshTokenUrl, '/GetToken']; +const whiteList = [RefreshTokenUrl, '/passwordLogin']; let loadingInstance: ReturnType<typeof Loading.service>; @@ -56,9 +55,13 @@ success: boolean; data: any; /** + * http鐘舵�佸悧 + */ + code?: number; + /** * 閿欒鐮� */ - error?: number; + errorCode?: string; /** * 閿欒淇℃伅 */ @@ -75,7 +78,7 @@ } interface ErrorInfo { - errorCode?: number; + errorCode?: string; errorMessage?: string; showType?: ErrorShowType; data: any; @@ -142,7 +145,7 @@ } else if ((error as AxiosError<ResponseStructure, IRequestOptions>).response) { // Axios 鐨勯敊璇� // 璇锋眰鎴愬姛鍙戝嚭涓旀湇鍔″櫒涔熷搷搴斾簡鐘舵�佺爜锛屼絾鐘舵�佷唬鐮佽秴鍑轰簡 2xx 鐨勮寖鍥� - handleAxiosResponseError(error as AxiosError<ErrorResponse, IRequestOptions>); + handleAxiosResponseError(error as AxiosError<ResponseStructure, IRequestOptions>); // Message.errorMessage(`Response status:${(error as AxiosError).response.status}`); } else if ((error as AxiosError).request) { // 璇锋眰宸茬粡鎴愬姛鍙戣捣锛屼絾娌℃湁鏀跺埌鍝嶅簲 @@ -157,7 +160,7 @@ // 閿欒鎶涘嚭 errorThrower: (res) => { - const { success, data, error: errorCode, msg, showType } = res; + const { success, data, errorCode, msg, showType } = res; if (!success) { const error: any = new Error(msg); error.name = 'BizError'; @@ -176,9 +179,9 @@ NProgress.start(); } - const token = getToken(); + const userStore = useUserStoreHook(); - const userInfo = getUserInfo(); + const userInfo = userStore.userInfo; const { showLoading = true, mock } = $config; @@ -198,31 +201,10 @@ } return new Promise((resolve) => { - if (token && $config.withCredentials) { - if (tokenIsExpired(userInfo)) { - if (!BoleRequest.refreshTokenPending) { - const userStore = useUserStoreHook(); - BoleRequest.refreshTokenPending = true; - // token杩囨湡鍒锋柊 - userStore - .refreshToken({ - refreshToken: userInfo.refreshToken, - clientId: userStore.accountInfo.client_id, - }) - .then((res) => { - $config.headers['Authorization'] = 'Bearer ' + res.accessToken; - BoleRequest.requests.forEach((cb) => cb(res.accessToken)); - BoleRequest.requests = []; - }) - .finally(() => { - BoleRequest.refreshTokenPending = false; - }); - } - resolve(BoleRequest.retryOriginalRequest($config)); - } else { - $config.headers['Authorization'] = 'Bearer ' + token; - resolve($config); - } + if (userInfo.accessToken && $config.withCredentials) { + $config.headers['Authorization'] = 'Bearer ' + userInfo.accessToken; + $config.headers['X-Authorization'] = 'Bearer ' + userInfo.refreshToken; + resolve($config); } else { resolve($config); } @@ -246,9 +228,19 @@ NProgress.done(); } + const userStore = useUserStoreHook(); + + if (response.headers['x-access-token']) { + userStore.setToken(response.headers['access-token']); + userStore.setUserInfo({ + accessToken: response.headers['access-token'], + refreshToken: response.headers['x-access-token'], + }); + } + endLoading(); - return getResponse ? response : (response.data as any).result; + return getResponse ? response : response.data.data; }, (error) => { endLoading(); @@ -272,18 +264,18 @@ [505]: 'HTTP鐗堟湰涓嶅彈鏀寔', }; -function handleAxiosResponseError(error: AxiosError<ErrorResponse, IRequestOptions>) { +function handleAxiosResponseError(error: AxiosError<ResponseStructure, IRequestOptions>) { if (error.response.config.url.toLowerCase().includes(RefreshTokenUrl.toLowerCase())) { handleLogout(); return; } if (error && error.response) { let message = ErrorMessageMap[error.response?.status] ?? '璇锋眰閿欒'; - if (error.response.data?.error?.message) { - message = error.response.data?.error?.message; + if (error.response.data?.msg) { + message = error.response.data?.msg; } - if (error.response?.status === 401) { + if (error.response?.status === 401 || error.response.data.code === 401) { handleLogout(); } Message.errorMessage(message); -- Gitblit v1.9.1