Skip to content

Instantly share code, notes, and snippets.

@abdullah
Created April 10, 2017 21:19
Show Gist options
  • Save abdullah/12b1de5f0b4de8b87608f04ea234237d to your computer and use it in GitHub Desktop.
Save abdullah/12b1de5f0b4de8b87608f04ea234237d to your computer and use it in GitHub Desktop.
axios middleware
/* eslint-disable */
import axios from 'axios';
import TokenStorage from '@/helpers/tokenStorage';
import store from '@/store';
import router from '@/router';
import { auth } from '@/services';
axios.interceptors.request.use(
config => {
const token = TokenStorage.get();
if (token) {
config.headers.Authorization = `Bearer ${token.access_token}`;
}
return config;
},
error => Promise.reject(error)
);
let _retry = false;
axios.interceptors.response.use(undefined, err => {
let res = err.response;
if (res.status === 401 && res.config && !_retry) {
_retry = true;
return new Promise((resolve, reject) => {
auth
.refreshToken()
.then(data => {
TokenStorage.set(data);
err.config.headers.Authorization = `Bearer ${data.access_token}`;
resolve(axios(err.config));
})
.catch(error => {
router.push('/login');
reject(error);
});
});
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment