You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
62 lines
2.4 KiB
62 lines
2.4 KiB
axios.defaults.timeout = 1000 * 10;
|
|
axios.interceptors.request.use(
|
|
function (config) {
|
|
if (config.method === 'post' && config.url.indexOf('/getToken') === -1 && config.url.indexOf('/refreshToken') === -1) {
|
|
if (store.state.token.accessToken) {
|
|
config.withCredentials = true;
|
|
config.headers['Authorization'] = 'Bearer ' + store.state.token.accessToken;
|
|
}
|
|
}
|
|
loading.show();
|
|
return config;
|
|
},
|
|
function (error) {
|
|
loading.hide();
|
|
console.error(error);
|
|
return Promise.reject(error);
|
|
}
|
|
);
|
|
axios.interceptors.response.use(function (response) {
|
|
loading.hide();
|
|
return response;
|
|
}, function (error) {
|
|
loading.hide();
|
|
console.error(error);
|
|
if (error.response) {
|
|
if (error.response.status === 401) {
|
|
if (store.state.token.refreshToken) {
|
|
var url = config.service('platform/api/v1/token/refreshToken')
|
|
var data = '"' + store.state.token.refreshToken + '"';
|
|
return axios.post(url, data, { headers: { 'Content-Type': 'application/json;charset=UTF-8' } })
|
|
.then(function (response) {
|
|
store.commit('login', response.data);
|
|
error.config.headers['Authorization'] = 'Bearer ' + store.state.accessToken;
|
|
console.log('redo request after refresh token');
|
|
return axios(error.config);
|
|
})
|
|
.catch(function (error) {
|
|
if (error.response.status === 401) {
|
|
store.commit('logout', response.data);
|
|
console.log('refreshToken 已过期');
|
|
router.push('components/views/areas/default/login.vue');
|
|
}
|
|
else {
|
|
console.error(error);
|
|
}
|
|
});
|
|
}
|
|
else {
|
|
router.push('components/views/areas/default/login.vue');
|
|
}
|
|
}
|
|
else if (error.response.status === 403) {
|
|
//alert
|
|
}
|
|
}
|
|
else {
|
|
if (error.message.indexOf('timeout') !== -1) {
|
|
Swal.fire({ title: '请求超时,请返回重试', timer: 1500 });
|
|
}
|
|
}
|
|
return Promise.reject(error);
|
|
}); |