【发布时间】:2021-02-16 16:43:16
【问题描述】:
您好,我是 JWT 身份验证前端流程的新手,想知道在颁发新令牌时如何重新发送请求。
据我了解,Auth 令牌应该是短暂的,而 Refresh 令牌的寿命更长。这会导致请求经常因身份验证令牌过期而失败,并且必须使用新的身份验证令牌再次发送请求。
保持这种模式的最佳做法是什么?作为一名 POC,我写了 quick sn-p 来展示我的想法,但我觉得可能有更好的方法。
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);
});
}
});
}
非常感谢任何想法/帮助。 谢谢!
【问题讨论】:
标签: authentication jwt refresh-token auth-token