我对React很陌生,我一直在帮助React解决我们项目中的一个问题。JWT令牌在某些操作之前过期,在执行最初要执行的“final”调用之前,我们需要使用JWT refresh令牌刷新它。
mainFunction() {
[...]
if (!userTokenIsValid) {
updateUserToken();
}
executeWhateverNeedsPermission();
[...]
}
function userTokenIsValid() {
if (!localStorage.userToken) return null;
return (jwt.decode(localStorage.userToken).expiry > 30);
}
function getNewUserToken() {
if (!localStorage.userToken) return null;
return rp({
uri: API_URL + "/token/refresh",
method: 'POST',
headers: {
Authorization: localStorage.refreshToken
},
json: true
}).then((data) => {
if (!data || !data.userToken) {
localStorage.removeItem('userToken')
} else {
localStorage.setItem('userToken', data.token);
}
}).catch((error) => {
console.log("Something went wrong: " + error);
throw error;
});
}
我希望上面的代码按顺序执行,因此检查令牌并在必要时请求一个新的令牌,然后执行对API的请求。
401/管理/资源
200/api/令牌/刷新
如前所述,我对这一点还很陌生,我想我应该把代码改成使用promises,但我给出的每一次试用都不起作用(因为我的新手代码,我必须承认)。任何帮助都将不胜感激!