Привет, я новичок в интерфейсе аутентификации JWT, и мне было интересно, как повторно отправить запрос при выпуске нового токена.
Насколько я понимаю, токены Auth должны быть недолговечными, в то время как токены Refresh имеют более длительный срок службы. Это вызывает проблему, когда запросы часто завершаются с ошибкой из-за просроченного токена аутентификации, и запрос необходимо отправить снова с новым токеном аутентификации.
Как лучше всего поддерживать этот шаблон? В качестве POC я написал быстрый фрагмент, чтобы продемонстрировать идею, которая у меня была, но чувствую, что может быть лучший способ.
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);
});
}
});
}
Любые идеи/помощь очень ценятся. Спасибо!