import axios from 'axios' //请求拦截器 axios.interceptors.request.use( config => { config.headers.Authorization = 'Bearer ' + sessionStorage.getItem("token") config.method = 'POST' return config }, err => { return Promise.reject(error) } ) //响应拦截器 axios.interceptors.response.use( async response => { const res = response.data console.log(response) if (res.code !== 200) { if (res.code == 10001) { //token验证出错 window.location.href = "./#/login" } if (res.code == 10002) { //token验证超时 //console.log(response.config); var ss = '' await TokenRefresh().then(async data => { // // 使用最外层请求的返回值 // //console.log(data) if (data == false) { window.location.href = "./#/login" } if (data == true) { // console.log("刷新成功"); ss = await axios(response.config) // console.log("再次支持上此操作"); } }).catch(error => { console.log(error); }); //await TT(); return ss //console.log('我是后面的'); } if (res.code == 10003) { //无访问此接口权限 ElMessageBox.confirm( '无权限', '通知', { confirmButtonText: 'OK', cancelButtonText: 'Cancel', type: 'warning', showCancelButton: false, showClose: false, } ) .then(() => { // window.location.href = "/#/login" }) .catch(() => { }) return false } return Promise.reject(res.msg || 'Error').catch(err => { console.log(err) }) } else { //成功返回数据 return res } }, error => { return Promise.reject(error) } ) const instance = axios.create({ // 其他配置项 // ... // 禁用请求拦截器 interceptors: false }); function TokenRefresh() { console.log("执行:TokenRefresh") return new Promise((resolve, reject) => { instance({ method: 'post', url: import.meta.env.VITE_APP_API + 'tokenRefresh', headers: { Authorization: 'Bearer ' + sessionStorage.getItem("refreshToken") }, data: {} }).then(function(res) { // console.log('获取到新token'); if (res.data.status) { sessionStorage.setItem('token', res.data.token); sessionStorage.setItem('refreshToken', res.data.refresh_token); resolve(true); } else { resolve(false); } }); }) } export default axios