在这里我们要对别人的错误状态进行判断,来使用刷星token 解决token失效的 401的问题, 让别人在后台看不见的地方,登陆失败,然后里面调用这里的请求,再获取最新的token值,然后重新设置到我们的本地存储里面去
import axios from 'axios';
import config from '@/config/url.config';
import { setItem, getItem } from '@/utils/storage';
import router from '../router';
const request = axios.create({
baseURL: config.baseURL,
});
const whiteList = ['authorizations'];
request.interceptors.request.use(
function(config1) {
if (!whiteList.includes(config1.url) && getItem()) {
config1.headers.Authorization = `Bearer ${getItem().token}`;
}
return config1;
},
function(error) {
return Promise.reject(error);
}
);
request.interceptors.response.use(
function(response) {
return response.data;
},
function(error) {
console.dir(error);
if (
error.response &&
error.response.status === 401 &&
error.response.statusText === 'UNAUTHORIZED'
) {
if (getItem() && getItem().refresh_token) {
axios({
url: 'http://ttapi.research.xxxx.cn/app/v1_0/authorizations',
method: 'PUT',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
Authorization: `Bearer ${getItem().refresh_token}`,
},
}).then((res) => {
console.log(111, res);
setItem({
token: res.data.data.token,
refresh_token: getItem().refresh_token,
});
request(error);
router.go(0);
});
}
}
return Promise.reject(error);
}
);
export default request;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)