用户中心部分添加无感刷新

This commit is contained in:
junleea 2025-06-02 18:39:17 +08:00
parent 52a8d03bf4
commit cf042ea5d1
3 changed files with 21 additions and 20 deletions

View File

@ -70,7 +70,7 @@ export const GetUserInfoService = (Data) => {
} }
return request.post('/user/info', params, { return request.post('/user/info', params, {
headers: { headers: {
'token': Data.token, // 鐏忥拷 token 閺囨寧宕叉稉鐑樺亶閻ㄥ嫪鎶ら悧灞解偓锟<E58193> 'Authorization': "Bearer " + Data.token ,
} }
}) })
} }

View File

@ -15,7 +15,8 @@ const request = axios.create({
}); });
// 请求拦截器 - 添加token // 请求拦截器 - 添加token
request.interceptors.request.use(); request.interceptors.request.use(
);
// 响应拦截器 // 响应拦截器
request.interceptors.response.use( request.interceptors.response.use(
@ -23,19 +24,22 @@ request.interceptors.response.use(
if(result.status !== 200) { if(result.status !== 200) {
router.push("/login"); router.push("/login");
} }
if(result.data.message === "NOT_LOGIN" || [2, 3, 4].includes(result.data.code)) { if(result.data.message === "NOT_LOGIN" || [2, 3, 4].includes(result.data.code)) {
// 检测到token过期 // 检测到token过期
if (isRefreshing) { if (isRefreshing == false) {
isRefreshing = true; isRefreshing = true;
// 这里需要替换为实际的refresh token请求 // 这里需要替换为实际的refresh token请求
return axios.post('/user/refresh', { return axios.post('https://uc.ljsea.top/user/refresh_token', {
token: localStorage.getItem("refresh_token") refresh_token: localStorage.getItem("refresh_token")
},{
headers: {
'Authorization': `Bearer ${localStorage.getItem("refresh_token")}`
}
}).then(res => { }).then(res => {
const token = res.data["data"]["token"]; const token = res.data["data"]["access_token"];
const refreshToken = res.data["data"]["refresh_token"];
localStorage.setItem("token", token); localStorage.setItem("token", token);
localStorage.setItem("refresh_token", refreshToken);
// 重试所有挂起的请求 // 重试所有挂起的请求
requests.forEach(cb => cb(token)); requests.forEach(cb => cb(token));
@ -48,9 +52,7 @@ request.interceptors.response.use(
return request(config); return request(config);
}).catch(err => { }).catch(err => {
// 刷新token失败跳转登录 // 刷新token失败跳转登录
ElMessage.error('登录已过期,请重新登录!'); ElMessage.error('登录已过期请重新登录12');
localStorage.removeItem("token");
localStorage.removeItem("refresh_token");
router.push("/login"); router.push("/login");
return Promise.reject(err); return Promise.reject(err);
}); });
@ -62,13 +64,6 @@ request.interceptors.response.use(
resolve(request(result.config)); resolve(request(result.config));
}); });
}); });
} else {
// 其他登录失效情况
ElMessage.error('登录失效,请重新登录!');
localStorage.removeItem("token");
localStorage.removeItem("refresh_token");
router.push("/login");
return;
} }
} }
@ -90,8 +85,12 @@ request.interceptors.response.use(
if (!isRefreshing) { if (!isRefreshing) {
isRefreshing = true; isRefreshing = true;
return axios.post('/user/refresh', { return axios.post(baseURL+'user/refresh', {
refresh_token: localStorage.getItem("refresh_token") refresh_token: localStorage.getItem("refresh_token")
},{
headers: {
'Authorization': `Bearer ${localStorage.getItem("refresh_token")}`
}
}).then(res => { }).then(res => {
const { token, refresh_token } = res.data; const { token, refresh_token } = res.data;
localStorage.setItem("token", token); localStorage.setItem("token", token);

View File

@ -114,6 +114,8 @@ const onLogin = async () => {
localStorage.setItem("token", result.data.access_token); localStorage.setItem("token", result.data.access_token);
localStorage.setItem("userId", result.data.user_id); localStorage.setItem("userId", result.data.user_id);
localStorage.setItem("username", result.data.username); localStorage.setItem("username", result.data.username);
localStorage.setItem("refresh_token", result.data.refresh_token);
await getMyUserInfo(result.data.user_id); await getMyUserInfo(result.data.user_id);
//token.value= result.data; //token.value= result.data;
router.push("/user"); router.push("/user");