Axios interseptor не обновляет jwt токен
Пишу авторизацию на JWT. Для обновления протухшего токена написал интерсептор, который при получении 401 ошибки должен посылать запрос на url обновления токена, получать новый токен, заменять старый на новый, и возвращать оригинальный запрос с обновленным токеном. Но почему то токен остается старым, хотя в vuex store он добавляется, и запрос на refresh осуществляется без ошибок. Код интерсептора на TS:
import axios from "axios";
import tokenStore from '@/store/modules/token'
const api = axios.create({
baseURL: "http://localhost:8000",
headers: {
"Content-Type": "application/json",
},
});
api.interceptors.request.use(
(config)=>{
config.headers.common['Authorization'] = 'Bearer ' + String(localStorage.getItem('access'));
return config
},
(error) => {
return Promise.reject(error);
});
api.interceptors.response.use(
(res) => {return res},
async (err) => {
console.log('ERROR INTERSEPTOR: ');
const originalConfig = err.config;
if ( originalConfig._retry ){
console.log('RETRY' ,originalConfig);
}
if ( originalConfig.url !== tokenStore.OBTAIN_TOKEN_URL && err.response ){
if ( err.response.status === 401 && !originalConfig._retry){
originalConfig._retry = true;
await axios.post(tokenStore.REFRESH_TOKEN_URL, {refresh: tokenStore.refresh}).then(
response=>{
console.log('RESPONSE IN REFRESH');
const accessToken = response.data.access;
tokenStore.context.commit('setAccess', accessToken);
originalConfig.headers['Authorization'] = 'Bearer ' + accessToken;
return api.request(originalConfig);
}
)
}
}
}
);
export default api;