Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

86
Visualizações
El interceptor de respuesta Axios para token de actualización sigue disparando

La lógica: en cada solicitud hay un encabezado de autorización JWT que autentica al usuario. Si eso caduca, hay un punto final de cookie listo para actualizar el JWT.

Estoy usando axios y la respuesta del interceptor para verificar si el cliente obtiene un 401 para intentar actualizar el JWT. La cookie puede ser válida o no.

El problema es que el interceptor para refrescar el JWT nunca deja de disparar, y creo que tengo algo mal con la sincronización de las solicitudes. A continuación se muestra mi código:

 function refreshToken(dispatch) { return new Promise((resolve, reject) => { instance.put('/auth').then((response) => { dispatch({ type: "UPDATE_AUTH", payload: response.data }); resolve(response); }) .catch((error) => { reject(error); }); }); } instance.interceptors.response.use( response => { return response; }, err => { const error = err.response; if (error.status === 401 && error.config && !error.config._retry) { error.config._retry = true; return refreshToken(dispatch).then((resp) => { return instance(error.config); }) .catch((e) => { return Promise.reject(e); }); } return Promise.reject(error); } );
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Si tiene más de una solicitud paralela, actualizar el JWT será igual a la cantidad de solicitudes. Intente enviar /auth solo la primera vez y evite las próximas solicitudes. Puede usar localStorage para esta tarea.

 let requests = []; instance.interceptors.response.use( response => { return response; }, err => { const error = err.response; if (error.status === 401 && error.config && !error.config._retry) { requests.push(error.config); if (!localStorage.getItem('refresh')) { localStorage.setItem('refresh', 'done'); error.config._retry = true; return refreshToken(dispatch).then((resp) => { localStorage.removeItem('refresh'); const token = getAccessToken(); requests.map(req => { req.headers.Authorization = `Bearer ${token}`; return instance(req) }) }) .catch((e) => { localStorage.removeItem('refresh'); return Promise.reject(e); }); } } else { requests = []; } return Promise.reject(error); } );
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda