У меня есть приложение, которое использует accessToken + refreshToken для использования API.
Я хотел добавить промежуточное программное обеспечение, чтобы проверить accessToken и обновить его, если необходимо, перед выполнением вызова API.
Проблема, с которой я сталкиваюсь, заключается в том, что мое первоначальное действие всегда отправляется, даже если я не выполняю следующий метод.
Вот мое промежуточное ПО:
const requestMiddleware = store => next => action => {
const {user, accessToken} = loadStorage();
const payload = jwtDecoder(accessToken.access_token);
const refreshThreshold = (Date.now() + 1000) / 1000;
if(accessToken.refresh_token && refreshThreshold > payload.exp){
// Here we defined that we need to refresh the token
userConnexion.refresh(user.uuid, accessToken.refresh_token)
.then((accessToken) => {
// Token updated we can now run the next action
return next(action);
}, (error) => {
// Error on token refresh we throw an error
return Promise.reject(error.response.data.message);
});
}else{
// AccessToken is still valid so we continue with the next action
return next(action);
}
}
Например, если я отправляю действие USER_UPDATE, оно вызывает действие, даже если я не запускаю send любое следующее действие.
Мне кажется, что я что-то упускаю в промежуточном программном обеспечении для редуксов, но я не могу понять, что это такое.
Я использую redux-think для обработки своих асинхронных действий, и я думаю, что проблема заключается в том, как я это использую, но я не могу понять, как с этим справиться.
Должен ли я запретить запуск следующего действия автоматически?
Спасибо за вашу помощь.