video_ca/src/utils/request.js

94 lines
2.7 KiB
JavaScript
Raw Normal View History

import axios from "axios";
2024-01-10 17:11:39 +08:00
import router from "@/router/index.js";
2024-11-06 22:03:52 +08:00
import { ElMessage } from 'element-plus';
//const baseURL = "https://gep.ljsea.top/";
2024-10-25 18:34:11 +08:00
const baseURL = "https://tx.ljsea.top/";
2024-08-17 14:08:42 +08:00
//const baseURL= "http://localhost:8083";
//const baseURL="https://pm.ljsea.top";
2024-10-25 18:34:11 +08:00
//const baseURL = "https://gep.ljsea.xyz/";
2025-06-03 11:53:39 +08:00
let isRefreshing = false;
let requests = [];
const request = axios.create({
baseURL: baseURL,
});
// 请求拦截器 - 添加token
2025-06-03 11:53:39 +08:00
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(
result => {
if(result.status !== 200) {
router.push("/login");
}
2025-06-02 19:02:46 +08:00
if(result.data.message === "NOT_LOGIN" || [2, 3, 4].includes(result.data.code)) {
// 检测到token过期
2025-06-02 19:02:46 +08:00
if (isRefreshing == false) {
isRefreshing = true;
// 这里需要替换为实际的refresh token请求
2025-06-02 19:02:46 +08:00
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 => {
2025-06-02 19:02:46 +08:00
const token = res.data["data"]["access_token"];
localStorage.setItem("token", token);
2025-06-03 11:53:39 +08:00
//alert("token: " + token);
// 重试所有挂起的请求
requests.forEach(cb => cb(token));
requests = [];
isRefreshing = false;
// 重试当前请求
const config = result.config;
config.headers.Authorization = `Bearer ${token}`;
return request(config);
}).catch(err => {
// 刷新token失败跳转登录
ElMessage.error('登录已过期,请重新登录!');
router.push("/login");
return Promise.reject(err);
});
} else if (isRefreshing) {
// 正在刷新token将请求放入队列
return new Promise(resolve => {
requests.push(token => {
2025-06-03 11:53:39 +08:00
//alert("new token: " + token);
result.config.headers.Authorization = `Bearer ${token}`;
2025-06-03 11:53:39 +08:00
result.config.headers.token = token;
resolve(request(result.config));
});
});
2025-06-02 19:02:46 +08:00
}
}
if(result.data.code == 7) {
ElMessage.error('该用户已存在,请重新输入!');
return null;
}
if(result.data.code == 1) {
ElMessage.error('请求失败,请稍后重试!');
} else {
return result.data;
}
}
);
export default request;