From cf042ea5d15efff7390c06f51cf281c9b131e806 Mon Sep 17 00:00:00 2001 From: junleea <354425203@qq.com> Date: Mon, 2 Jun 2025 18:39:17 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E4=B8=AD=E5=BF=83=E9=83=A8?= =?UTF-8?q?=E5=88=86=E6=B7=BB=E5=8A=A0=E6=97=A0=E6=84=9F=E5=88=B7=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/user.js | 2 +- src/utils/uc_req.js | 37 ++++++++++++++++++------------------- src/views/Login.vue | 2 ++ 3 files changed, 21 insertions(+), 20 deletions(-) diff --git a/src/api/user.js b/src/api/user.js index 5b70e00..b6a87f2 100644 --- a/src/api/user.js +++ b/src/api/user.js @@ -70,7 +70,7 @@ export const GetUserInfoService = (Data) => { } return request.post('/user/info', params, { headers: { - 'token': Data.token, // 鐏忥拷 token 閺囨寧宕叉稉鐑樺亶閻ㄥ嫪鎶ら悧灞解偓锟� + 'Authorization': "Bearer " + Data.token , } }) } diff --git a/src/utils/uc_req.js b/src/utils/uc_req.js index 1ddb07c..f958c52 100644 --- a/src/utils/uc_req.js +++ b/src/utils/uc_req.js @@ -15,7 +15,8 @@ const request = axios.create({ }); // 请求拦截器 - 添加token -request.interceptors.request.use(); +request.interceptors.request.use( +); // 响应拦截器 request.interceptors.response.use( @@ -23,19 +24,22 @@ request.interceptors.response.use( if(result.status !== 200) { router.push("/login"); } + if(result.data.message === "NOT_LOGIN" || [2, 3, 4].includes(result.data.code)) { // 检测到token过期 - if (isRefreshing) { + if (isRefreshing == false) { isRefreshing = true; // 这里需要替换为实际的refresh token请求 - return axios.post('/user/refresh', { - token: localStorage.getItem("refresh_token") + return axios.post('https://uc.ljsea.top/user/refresh_token', { + refresh_token: localStorage.getItem("refresh_token") + },{ + headers: { + 'Authorization': `Bearer ${localStorage.getItem("refresh_token")}` + } }).then(res => { - const token = res.data["data"]["token"]; - const refreshToken = res.data["data"]["refresh_token"]; + const token = res.data["data"]["access_token"]; localStorage.setItem("token", token); - localStorage.setItem("refresh_token", refreshToken); // 重试所有挂起的请求 requests.forEach(cb => cb(token)); @@ -48,9 +52,7 @@ request.interceptors.response.use( return request(config); }).catch(err => { // 刷新token失败,跳转登录 - ElMessage.error('登录已过期,请重新登录!'); - localStorage.removeItem("token"); - localStorage.removeItem("refresh_token"); + ElMessage.error('登录已过期,请重新登录!12'); router.push("/login"); return Promise.reject(err); }); @@ -62,14 +64,7 @@ request.interceptors.response.use( resolve(request(result.config)); }); }); - } else { - // 其他登录失效情况 - ElMessage.error('登录失效,请重新登录!'); - localStorage.removeItem("token"); - localStorage.removeItem("refresh_token"); - router.push("/login"); - return; - } + } } if(result.data.code == 7) { @@ -90,8 +85,12 @@ request.interceptors.response.use( if (!isRefreshing) { isRefreshing = true; - return axios.post('/user/refresh', { + 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); diff --git a/src/views/Login.vue b/src/views/Login.vue index d7b9287..8f3f97c 100644 --- a/src/views/Login.vue +++ b/src/views/Login.vue @@ -114,6 +114,8 @@ const onLogin = async () => { localStorage.setItem("token", result.data.access_token); localStorage.setItem("userId", result.data.user_id); localStorage.setItem("username", result.data.username); + localStorage.setItem("refresh_token", result.data.refresh_token); + await getMyUserInfo(result.data.user_id); //token.value= result.data; router.push("/user");