Как использовать Redux для обновления токена JWT?
Наше приложение React Native Redux использует токены JWT для аутентификации. Есть много действий, которые требуют таких токенов, и многие из них отправляются одновременно, например, когда приложение загружается.
Например.
componentDidMount() {
dispath(loadProfile());
dispatch(loadAssets());
...
}
И то и другоеloadProfile
а такжеloadAssets
требуют JWT. Сохраняем токен в состоянии иAsyncStorage
, Мой вопрос, как справиться с истечением срока действия токена.
Первоначально я собирался использовать промежуточное ПО для обработки истечения токена
// jwt-middleware.js
export function refreshJWTToken({ dispatch, getState }) {
return (next) => (action) => {
if (isExpired(getState().auth.token)) {
return dispatch(refreshToken())
.then(() => next(action))
.catch(e => console.log('error refreshing token', e));
}
return next(action);
};
}
Проблема, с которой я столкнулся, заключалась в том, что обновление токена произойдет для обоихloadProfile
а такжеloadAssets
действия, потому что в момент их отправки токен истекает. В идеале я бы хотел «приостановить» действия, требующие аутентификации, до обновления токена. Есть ли способ сделать это с промежуточным программным обеспечением?