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

200
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 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