diff --git a/src/utils/gs_req.js b/src/utils/gs_req.js index ad65172..56e71c4 100644 --- a/src/utils/gs_req.js +++ b/src/utils/gs_req.js @@ -4,17 +4,27 @@ import { ElMessage } from 'element-plus'; //const baseURL = "https://gep.ljsea.xyz/"; //const baseURL= "http://localhost:8083"; //const baseURL="https://pm.ljsea.top"; -const baseURL2 = "https://gep.ljsea.top/"; +const baseURL = "https://gep.ljsea.top/"; + let isRefreshing = false; let requests = []; const request = axios.create({ - baseURL: baseURL2, + baseURL: baseURL, }); // 请求拦截器 - 添加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( @@ -27,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") @@ -38,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)); @@ -58,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)); }); }); @@ -75,49 +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 => { - 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); } ); diff --git a/src/utils/request.js b/src/utils/request.js index 7ac083a..cbf8452 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -7,6 +7,7 @@ const baseURL = "https://tx.ljsea.top/"; //const baseURL="https://pm.ljsea.top"; //const baseURL = "https://gep.ljsea.xyz/"; + let isRefreshing = false; let requests = []; @@ -15,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( @@ -28,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") @@ -39,6 +48,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 +69,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,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); } ); diff --git a/src/utils/uc_req.js b/src/utils/uc_req.js index f958c52..9eaaef9 100644 --- a/src/utils/uc_req.js +++ b/src/utils/uc_req.js @@ -16,6 +16,14 @@ const request = axios.create({ // 请求拦截器 - 添加token request.interceptors.request.use( + config => { + const token = localStorage.getItem("token"); + if (token) { + config.headers.Authorization = `Bearer ${token}`; + config.headers.token = token; + } + return config; + } ); // 响应拦截器 @@ -29,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") @@ -40,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)); @@ -60,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)); }); }); @@ -77,49 +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 => { - 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); } );