Наше приложение 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
, потому что в момент их отправки токен будет истек. В идеале я хотел бы "приостановить" действия, требующие аутентификации, до тех пор, пока токен не будет обновлен. Есть ли способ сделать это с помощью промежуточного программного обеспечения?