【发布时间】:2016-08-25 05:14:09
【问题描述】:
我们的 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 操作都会刷新令牌,因为在发送它们时令牌将过期。理想情况下,我想“暂停”需要身份验证的操作,直到刷新令牌。有没有办法用中间件做到这一点?
【问题讨论】:
-
我建议你看一个名为redux-saga的库...它完美地解决了这个问题。
-
@KevinHe:能多分享一下 redux-saga 是如何解决这个问题的吗?
标签: javascript reactjs react-native redux jwt