【发布时间】:2020-01-31 10:49:50
【问题描述】:
我正在开发登录功能,刷新令牌时遇到问题。
当令牌过期请求刷新令牌时,删除旧令牌,并将新令牌保存到 AsyncStorage。
登录成功后必须使用函数 A 和 B。函数 A 正在使用新令牌发出请求。函数 B 说它需要刷新令牌,所以请求刷新令牌(请求成功,令牌正在刷新)但是请求 A 现在使用的令牌invalid - 我认为这是由于异步而发生的
这是我用来刷新令牌的代码:
axiosInstance.interceptors.response.use(
function (response) {
return response;
},
async function (error) {
if (error.response.status === CODE_TOKEN_EXPIRED) {
try {
const token = await authenticationService.getRefreshToken();
const response = await authenticationService.refreshToken(token);
await authenticationService.removeToken();
await authenticationService.storeToken(response.data.params.access_token);
await authenticationService.storeRefreshToken(response.data.params.refresh_token);
error.config.headers.Authorization = 'Bearer ' + response.data.params.access_token;
error.response.config.headers['Authorization'] = 'Bearer ' + response.data.params.access_token;
return axiosInstance(error.config);
} catch (err) {
console.log(2, err);
await authenticationService.removeToken();
navigationService.navigate('LoginForm');
}
}
return Promise.reject(error);
}
);
有人知道如何处理刷新令牌的异步调用吗?
【问题讨论】:
标签: javascript react-native axios