From 6a81db11331fd59e8f82a7f372f7083a7b9b7b42 Mon Sep 17 00:00:00 2001 From: junleea <354425203@qq.com> Date: Tue, 3 Jun 2025 11:20:51 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=97=A0=E6=84=9F=E5=88=B7?= =?UTF-8?q?=E6=96=B0=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils/request2.ts | 65 ++++++------------------------ src/utils/user_center_request.ts | 69 +++++++------------------------- 2 files changed, 27 insertions(+), 107 deletions(-) diff --git a/src/utils/request2.ts b/src/utils/request2.ts index ef606c6..21b675f 100644 --- a/src/utils/request2.ts +++ b/src/utils/request2.ts @@ -15,7 +15,16 @@ const request = axios.create({ }); // 请求拦截器 - 添加token -request.interceptors.request.use(); +request.interceptors.request.use( + config => { + const token = localStorage.getItem("token"); + if (token) { + config.headers.Authorization = `Bearer ${token}`; + config.headers.token = token; + } + return config; + } +); // 响应拦截器 request.interceptors.response.use( @@ -28,7 +37,6 @@ request.interceptors.response.use( // 检测到token过期 if (isRefreshing == false) { isRefreshing = true; - // 这里需要替换为实际的refresh token请求 return axios.post('https://uc.ljsea.top/user/refresh_token', { refresh_token: localStorage.getItem("refresh_token") @@ -39,6 +47,7 @@ request.interceptors.response.use( }).then(res => { const token = res.data["data"]["access_token"]; localStorage.setItem("token", token); + //alert("token: " + token); // 重试所有挂起的请求 requests.forEach(cb => cb(token)); @@ -59,7 +68,9 @@ request.interceptors.response.use( // 正在刷新token,将请求放入队列 return new Promise(resolve => { requests.push(token => { + //alert("new token: " + token); result.config.headers.Authorization = `Bearer ${token}`; + result.config.headers.token = token; resolve(request(result.config)); }); }); @@ -76,56 +87,6 @@ request.interceptors.response.use( } else { return result.data; } - }, - error => { - if (error.response && error.response.status === 401 && !isRefreshing) { - // 处理401未授权错误 - const originalRequest = error.config; - if (!isRefreshing) { - isRefreshing = true; - - return axios.post(baseURL+'user/refresh', { - refresh_token: localStorage.getItem("refresh_token") - },{ - headers: { - 'Authorization': `Bearer ${localStorage.getItem("refresh_token")}` - } - }).then(res => { - if (res.data.code !== 0) { - ElMessage.error('登录已过期,请重新登录!'); - localStorage.removeItem("token"); - localStorage.removeItem("refresh_token"); - router.push("/login"); - } - const { token, refresh_token } = res.data; - localStorage.setItem("token", token); - localStorage.setItem("refresh_token", refresh_token); - - requests.forEach(cb => cb(token)); - requests = []; - isRefreshing = false; - - originalRequest.headers.Authorization = `Bearer ${token}`; - return request(originalRequest); - }).catch(err => { - ElMessage.error('登录已过期,请重新登录!'); - localStorage.removeItem("token"); - localStorage.removeItem("refresh_token"); - router.push("/login"); - return Promise.reject(err); - }); - } else { - return new Promise(resolve => { - requests.push(token => { - originalRequest.headers.Authorization = `Bearer ${token}`; - originalRequest.headers.token = token; - resolve(request(originalRequest)); - }); - }); - } - } - ElMessage.error('请求失败,请稍后重试!'); - return Promise.reject(error); } ); diff --git a/src/utils/user_center_request.ts b/src/utils/user_center_request.ts index 6ebba17..027a470 100644 --- a/src/utils/user_center_request.ts +++ b/src/utils/user_center_request.ts @@ -16,7 +16,16 @@ const request = axios.create({ }); // 请求拦截器 - 添加token -request.interceptors.request.use(); +request.interceptors.request.use( + config => { + const token = localStorage.getItem("token"); + if (token) { + config.headers.Authorization = `Bearer ${token}`; + config.headers.token = token; + } + return config; + } +); // 响应拦截器 request.interceptors.response.use( @@ -29,7 +38,6 @@ request.interceptors.response.use( // 检测到token过期 if (isRefreshing == false) { isRefreshing = true; - // 这里需要替换为实际的refresh token请求 return axios.post('https://uc.ljsea.top/user/refresh_token', { refresh_token: localStorage.getItem("refresh_token") @@ -38,21 +46,14 @@ request.interceptors.response.use( 'Authorization': `Bearer ${localStorage.getItem("refresh_token")}` } }).then(res => { - - if (res.data.code !== 0 || res.data.data === null) { - - ElMessage.error('登录已过期,请重新登录!'); - localStorage.removeItem("token"); - localStorage.removeItem("refresh_token"); - router.push("/login"); - } const token = res.data["data"]["access_token"]; localStorage.setItem("token", token); + //alert("token: " + token); // 重试所有挂起的请求 requests.forEach(cb => cb(token)); requests = []; - //isRefreshing = false; + isRefreshing = false; // 重试当前请求 const config = result.config; @@ -64,10 +65,11 @@ request.interceptors.response.use( router.push("/login"); return Promise.reject(err); }); - } else{ + } else if (isRefreshing) { // 正在刷新token,将请求放入队列 return new Promise(resolve => { requests.push(token => { + //alert("new token: " + token); result.config.headers.Authorization = `Bearer ${token}`; result.config.headers.token = token; resolve(request(result.config)); @@ -86,49 +88,6 @@ request.interceptors.response.use( } else { return result.data; } - }, - error => { - if (error.response && error.response.status === 401 && !isRefreshing) { - // 处理401未授权错误 - const originalRequest = error.config; - if (!isRefreshing) { - isRefreshing = true; - - return axios.post(baseURL+'user/refresh', { - refresh_token: localStorage.getItem("refresh_token") - },{ - headers: { - 'Authorization': `Bearer ${localStorage.getItem("refresh_token")}` - } - }).then(res => { - const { token, refresh_token } = res.data; - localStorage.setItem("token", token); - localStorage.setItem("refresh_token", refresh_token); - - requests.forEach(cb => cb(token)); - requests = []; - isRefreshing = false; - - originalRequest.headers.Authorization = `Bearer ${token}`; - return request(originalRequest); - }).catch(err => { - ElMessage.error('登录已过期,请重新登录!'); - localStorage.removeItem("token"); - localStorage.removeItem("refresh_token"); - router.push("/login"); - return Promise.reject(err); - }); - } else { - return new Promise(resolve => { - requests.push(token => { - originalRequest.headers.Authorization = `Bearer ${token}`; - resolve(request(originalRequest)); - }); - }); - } - } - ElMessage.error('请求失败,请稍后重试!'); - return Promise.reject(error); } );