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.
iot/projects/WebMVC/wwwroot/js/axios.js

44 lines
1.7 KiB

axios.interceptors.request.use(
function (config) {
if (config.url.indexOf('.html') === -1 && config.url.indexOf('getToken') === -1) {
if (store.state.token.accessToken) {
config.withCredentials = true;
config.headers['x-requested-with'] = 'XMLHttpRequest';
config.headers['Authorization'] = 'Bearer ' + store.state.token.accessToken;
}
}
loading.show();
return config;
},
function (error) {
console.log('axios.interceptors.request.error:');
console.log(error);
loading.hide();
return Promise.reject(error);
}
);
axios.interceptors.response.use(function (response) {
loading.hide();
return response;
}, function (error) {
console.log(error.response);
if (error.response.status === 401 && error.config.url.indexOf('refreshToken') === -1) {
var url = apiHost + '/UserCenter/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('setToken', 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) {
console.log('refreshToken 已过期');
router.push('/pages/login');
}
});
}
loading.hide();
return Promise.reject(error);
});