Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

297
Vistas
Redirección de Nextjs en _app.js 'La página no se redirige correctamente'

Estoy construyendo la parte de autenticación de usuario de una aplicación nextjs. He completado la mayor parte salvo las rutas protegidas. Estoy intentando manejar la parte de autenticación en _app.js. Aquí está el archivo:

 import App from 'next/app' import '../styles/globals.css' import { parseCookies } from 'nookies' import { redirectUser } from '../utils/auth' import jwt from 'jsonwebtoken' class MyApp extends App { static async getInitialProps({ Component, ctx }) { const { token } = parseCookies(ctx) let pageProps = {} if (Component.getInitialProps) { pageProps = await Component.getInitialProps(ctx) } if (!token) { const isProtectedRoute = ctx.pathname === '/account' if (isProtectedRoute) { redirectUser(ctx, '/login') } } else { try { const verified = jwt.verify(token, process.env.JWT_SECRET) } catch(err) { console.error(err) redirectUser(ctx, '/login') } } return { pageProps } } render() { const { Component, pageProps } = this.props; return ( <Component {...pageProps} /> ) } } export default MyApp

Y mi archivo redirectUser:

 import cookie from 'js-cookie'; import Router from 'next/router'; export function handleLogin(token) { cookie.set('token', token) Router.push('/account'); } export function redirectUser(ctx, location) { if (ctx.req) { ctx.res.writeHead(302, { Location: location }) ctx.res.end() } else { Router.push(location) } }

La parte de autenticación redirige correctamente cuando un usuario no tiene un token, pero si ese token se modifica para que no sea válido, aparece un error de redireccionamiento:

 The page isn't redirecting properly Firefox has detected that the server is redirecting the request for this address in a way that will never complete.

Confirmé que es la segunda llamada de redirectUser la que está causando este error. Incluso si lo coloco fuera del condicional else en la parte inferior de la función getInitialProps obtengo el mismo resultado.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Obtiene ese error porque termina desencadenando un ciclo de redireccionamiento infinito a la página de inicio de /login .

Al aterrizar en cualquier página con un token no válido, se redirigirá a la página de inicio de /login . Cuando ocurra esta redirección, se activará otra llamada App.getInitialProps que terminará provocando otra redirección a la página de inicio de /login , ya que el token aún no es válido, y así sucesivamente.

Puede evitar este comportamiento agregando controles cuando la página actual es la página de inicio de /login . Esto se puede manejar de varias maneras, pero dejaré un ejemplo aquí.

 if (!token) { const isProtectedRoute = ctx.pathname === '/account' if (isProtectedRoute) { redirectUser(ctx, '/login') } } else if (ctx.pathname !== "/login") { // To avoid redirect loop try { const verified = jwt.verify(token, process.env.JWT_SECRET) } catch(err) { console.error(err) redirectUser(ctx, '/login') } }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda