Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

98
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!