我有一个使用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,即使我不运行也将调用该动作发送下一个动作。
我认为我缺少有关redux中间件的信息,但我找不到它的含义。
我正在使用redux-think来处理我的异步操作,我认为问题是我使用它的方式,但是我找不到如何处理它。 我是否应该阻止下一个动作自动运行?
谢谢您的帮助。
答案 0 :(得分:0)
我终于找到了解决问题的方法。 看来我需要在重用中间件之前应用中间件。