From bae1e0d700497fc5bb88949b8b36b9049dfa1a27 Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期五, 17 十月 2025 14:58:26 +0800
Subject: [PATCH] feat: 1.2.0.1
---
src/utils/request/index.ts | 72 ++++++++++++++++-------------------
1 files changed, 33 insertions(+), 39 deletions(-)
diff --git a/src/utils/request/index.ts b/src/utils/request/index.ts
index 3c654d4..e11bb12 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;
@@ -117,6 +120,9 @@
const errorInfo: ErrorInfo | undefined = (error as any).info;
if (errorInfo) {
const { errorMessage, errorCode } = errorInfo;
+ if (Number(errorCode) === 401) {
+ handleLogout();
+ }
switch (errorInfo.showType) {
case ErrorShowType.SILENT:
// do nothing
@@ -142,7 +148,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 +163,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';
@@ -170,16 +176,15 @@
requestInterceptors: [
[
(config) => {
- console.log('req config: ', config);
const $config = config;
// 寮�鍚繘搴︽潯鍔ㄧ敾
if (config.needNProcess) {
NProgress.start();
}
- const token = getToken();
+ const userStore = useUserStoreHook();
- const userInfo = getUserInfo();
+ const userInfo = userStore.userInfo;
const { showLoading = true, mock } = $config;
@@ -199,31 +204,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);
}
@@ -247,9 +231,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();
@@ -273,18 +267,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