Authentication 刷新JWT令牌后如何重试API调用?
您好,我对JWT auth的前端流程不熟悉,想知道在发出新令牌时如何重新发送请求 根据我的理解,Auth令牌应该是短期的,而刷新令牌的寿命更长。这会导致一个问题,即请求经常由于过期的身份验证令牌而失败,并且必须使用新的身份验证令牌再次发送请求 维持这种模式的最佳实践是什么?作为一名POC,我写了一个简短的片段来展示我的想法,但我觉得可能有更好的方法Authentication 刷新JWT令牌后如何重试API调用?,authentication,jwt,refresh-token,auth-token,Authentication,Jwt,Refresh Token,Auth Token,您好,我对JWT auth的前端流程不熟悉,想知道在发出新令牌时如何重新发送请求 根据我的理解,Auth令牌应该是短期的,而刷新令牌的寿命更长。这会导致一个问题,即请求经常由于过期的身份验证令牌而失败,并且必须使用新的身份验证令牌再次发送请求 维持这种模式的最佳实践是什么?作为一名POC,我写了一个简短的片段来展示我的想法,但我觉得可能有更好的方法 const API_FETCH_ATTEMPTS = 2; const refreshAPI = 'backend/refresh'; func
const API_FETCH_ATTEMPTS = 2;
const refreshAPI = 'backend/refresh';
function customFetch(url, options, retryAttempts = API_FETCH_ATTEMPTS){
if (!retryAttempts){
return null
}
const authToken = localStorage.getItem('auth-token');
return fetch(url, {...options,'AuthToken': authToken})
.then()// successful call
.catch(err => {
if (err.status === '401'){
fetch(refreshAPI)
.then(newToken => {
localStorage.setItem('authToken', newToken)
customFetch(url, options, retryAttempts - 1);
});
}
});
}
非常感谢您的任何想法/帮助。
谢谢 您走的是正确的道路:
- 期待401秒
- 刷新访问令牌
- 使用新令牌,仅重试一次API调用
- 如果令牌刷新失败,请重定向用户以重新登录
- 调用API的服务代理
- 用于执行OAuth工作的验证器类