Я пытаюсь написать перехватчик vue-resource, который обновляет токен доступа JWT, когда срок его действия истек. Я предполагаю, что мне нужен обратный вызов после запроса, который проверяет наличие ошибки истечения срока действия маркера (status == 401
в моем случае), а затем вызывает конечную точку обновления и повторяет первоначальный запрос.
В приведенном ниже коде единственная проблема, с которой я сталкиваюсь, заключается в том, что вызов next()
после обновления токена никогда не происходит, даже если обновление выполняется нормально, а новые токены сохраняются в файле localStorage
.
Vue.http.interceptors.push(function (request, next) {
if (!request.headers.has('Authorization') && window.localStorage.access_token) {
request.headers.set('Authorization', `Bearer ${window.localStorage.access_token}`);
}
next(function (response) {
if (response.status === 401) {
const refreshToken = localStorage.getItem('refresh_token');
Vue.http.post('/api/v4/auth/refresh', null, {
headers: {'Authorization': `Bearer ${refreshToken}`}
}).then((response) => {
localStorage.setItem('access_token', response.data.accessToken);
localStorage.setItem('refresh_token', response.data.refreshToken);
}).then(() => {
next();
});
}
});
})