Я пытаюсь реализовать перехватчик, который обновляет токен с истекшим сроком действия и повторяет последний запрос. Это работает по большей части, но когда повторный исходный запрос res
не определен
Это мой оригинальный запрос
this.$http.post('/auth/verify')
.then((res) => {
this.$store.commit('login', res.data);
})
.catch((e) => {
console.error(`Error during verify: ${e}`);
});
и это перехватчик, который я использую
axios.interceptors.response.use(null, (err) => {
if (err.response && err.response.status === 401 && err.response.data.message.includes('jwt expired')) {
const { refreshToken } = JSON.parse(localStorage.getItem('auth'));
axios.post('/auth/refresh', { refreshToken })
.then((res) => {
axios.defaults.headers.common.Authorization = `Bearer ${res.data.token}`;
err.config.headers.Authorization = `Bearer ${res.data.token}`;
localStorage.setItem('auth', JSON.stringify({
refreshToken,
token: res.data.token,
}));
return axios(err.config);
})
.catch((e) => {
console.error(`Error refreshing token: ${e}`);
});
} else {
return Promise.reject(err);
}
});
Как я уже сказал res
не определено после повторной попытки запроса после перехватчика, однако во вкладке сети chrome devtools второй запрос к /auth/verify
проходит и возвращает правильный ответ, что означает, что второй запрос на проверку был успешным .