gpt4 book ai didi

javascript - 处理刷新 token 的方法

转载 作者:行者123 更新时间:2023-11-28 03:12:07 29 4
gpt4 key购买 nike

我正在开发登录功能,但刷新 token 时遇到问题。

当 token 过期时,请求刷新 token ,删除旧 token ,并将新 token 保存到 AsyncStorage。

登录成功后必须执行功能 A 和 B。功能 A 正在使用新 token 发出请求。函数 B 说它需要刷新 token ,因此发出刷新 token 的请求(请求成功, token 正在刷新),但请求 A 现在使用的 token 无效 - 我认为这是由于异步

这是我用来刷新 token 的代码:

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);
}
);

有人知道如何处理刷新 token 的异步调用吗?

最佳答案

首先要检查您是否将 token 更改为正确的 axios 实例。有必要像您一样更改 error.response 配置上的 Authorization header ,而且对于主 axios 实例(如果有的话)也必须如此: axios.defaults.headers.common["Authorization"] = "Bearer "+ 访问 token ;

如果是多个并行请求,则可能需要在 token 刷新后推迟,问题和答案变得复杂,但请检查此 gist具有 axios 的完整刷新逻辑。

关于javascript - 处理刷新 token 的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60002438/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com