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

198
Views
La redirección Express res.redirect no funciona como se esperaba

Tengo una aplicación express. Estoy agregando un middleware que redirige al usuario a cerrar sesión si el token no es válido .

 export async function validateAuthTokenMiddleware( req: Request, res: Response, next: NextFunction, ): Promise<NextFunction | void> { try { const { context } = req; await validateToken(context); next(); } catch (err) { logoutAndRedirectUser(res); } }

Código para cerrar sesión y logoutAndRedirectUser

 const logoutUser = (res: Response) => { res.clearCookie('my_token') res.format({ json: () => res.status(401).json({ errors: [ { message: 'You must login to see this', errorCode: '0001', }, ], extensions: { location: location, }, }), html: () => res.redirect(302, location), default: () => res.redirect(302, location), }); };

Estoy usando este middleware en mi ruta así. Todas las solicitudes de API del cliente pasan por esta ruta:

 router.use('/api', validateAuthTokenMiddleware, graphql);

Sin embargo, la redirección no funciona como se esperaba.

  • Espero que mi navegador sea redirigido a mi ruta/página '/iniciar sesión' después de borrar la cookie. En cambio, solo veo 401 para mi llamada /api y el navegador permanece en la misma página. res.redirect(302, '/login') no se activa.
  • He intentado refactorizar logoutUser para enviar simplemente res.redirect(302, '/login') en lugar de res.json. Todavía no funciona.

Instantánea de red como se observa en el navegador: ingrese la descripción de la imagen aquí

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Mi navegador hace solicitudes simples con

 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,...

Esto significa que application/json es aceptable (debido a */*;q=0.8 ), por lo tanto, se elige su respuesta json, que no es una redirección. Tal vez ayude reordenar las opciones dentro de res.format .

Tu escribiste:

He intentado refactorizar logoutUser para enviar simplemente res.redirect(302, '/login') en lugar de res.json. Todavía no funciona.

¿Puedes compartir tu código refactorizado también, por favor?

about 4 years ago · Juan Pablo Isaza Report

0

Termino estableciendo una condición en mi código de cliente. Si recibió 401, redirija a la página de inicio de sesión.

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!