当前,当我调用API时,我正在检查响应代码是否为401
,因此我正在调用刷新令牌API以获取新令牌。
在调用刷新令牌API时,如果我收到200
响应,我就想起了初始API以获取响应。
这是正确的方法吗?我还有一个担心,如果出了问题,可以一遍又一遍地调用loaduserinfo
方法,从而变成一个无限循环。我该如何避免这种情况。
loaduserinfo() {
axios.get(port + '/api/user/me', {
headers: {
Authorization: AuthorizationHead + localStorage.getItem('TOKEN_KEY')
}
}).then((response) => {
this.currentuserinfo = '';
this.currentuserinfo = response.data;
}).catch((error) => {
if (error.response.data.status == 401) {
this.getnewjwttoken()
.then(response => {
if (response == 200) {
this.loaduserinfo();
}
})
}
else if (error.response.data.status == 500) {
console.log('500 Error');
}
else {
console.log(error.response.data.message);
}
})
}
getnewjwttoken() {
return new Promise((resolve, reject) => {
var payload = {
"refreshToken": localStorage.getItem('REFRESH_TOKEN')
};
axios.post(port + '/api/auth/refresh-token', payload, {
}).then((response) => {
localStorage.setItem("TOKEN_KEY", response.data.accessToken);
resolve(200);
}).catch((error) => {
alert("Session has Expired Please Login Again");
this.logout();
})
})
}