Среднее ПО для проверки/обновления маркеров доступа и обновления JWT
У меня есть приложение с аутентификацией JWT, написанное на React/ Django / Django-allauth.
У меня есть конечная точка для проверки/обновления моего маркера доступа, и она отлично работает. Мой вопрос заключается в том, где разместить логику обновления, чтобы она автоматически обрабатывалась перед каждым запросом? Есть ли промежуточное ПО, которое я могу использовать, или есть способ переопределить fetch?
По сути, я хочу, чтобы приложение проверяло токен, обновляло его, если необходимо, и перенаправляло неаутентифицированного пользователя на вход в систему для каждого запроса, зависящего от JWT авторизации. Я также не хочу переписывать эту логику снова и снова.
Я думаю переопределить fetch
async function handle_token() {
const {valid, status} = await API.process_token()
return {
status,
valid,
}
}
// initialize the fetch object to minimize code repeat at every request
// https://stackoverflow.com/questions/44820568/set-default-header-for-every-fetch-request
function updateOptions(options) {
const update = { ...options }
update.headers = Object.assign({
'Content-Type': 'application/json',
'Accept': 'application/json'
}, update.headers ? update.headers : {})
if(update.jwt) {
const token = localStorage.getItem('access') ? localStorage.getItem('access') : ''
update.headers = Object.assign(update.headers, {'Authorization': `Bearer ${token}`})
/*******************************************************************************
* Perhaps put token logic here but unser how to to handle it
********************************************************************************/
const {valid, status} = handle_token()
}
return update;
}
function fetcher(url, options) {
return fetch(url, updateOptions(options));
}
export default fetcher;
Или, может быть, есть промежуточное ПО, которое принято использовать? Спасибо