// bootstrap.js axios.interceptors.response.use( response => { /** * If the response contains authorization header, * Then we assume that it is from the renew token request. * Set the new JWT token. */ const authHeader = response.headers.authorization; if (authHeader) jwt.setToken(authHeader.substr(7)); return response; }, error => { const errorResponseData = error.response.data; /** * Expired token but still refreshable will hit this condition. * We then trying to renew the expired token. * Also passing the failed request as a callback to retry failed request. */ if (errorResponseData.message === 'Token has expired' && errorResponseData.statusCode === 401) { return store.dispatch('auth/renewToken', error.response.config) .then(response => { if (response.status === 201 || response.status === 200) { return Promise.resolve(response); } }); } return Promise.reject(error); } ); // entry file (main.js) store.dispatch('auth/getAuthUser') .then(_ => { return new Vue({ el: '#app', store, router, }); }) .catch(_ => { jwt.clearToken(); return new Vue({ el: '#app', store, router, }); });