Búsqueda de sitios web

reactjs - Middleware de NextJS causando el error "localhost te redirigió demasiadas veces"


Acabo de implementar la autenticación por correo electrónico/contraseña en mi aplicación NextJS alojada localmente con NextAuth. Cuando creé el middleware para proteger rutas, cada vez que hacía clic en el botón de cerrar sesión, recibía el error "localhost lo redirigió demasiadas veces."

Este es mi archivo middleware.ts:

import { NextRequest, NextResponse } from 'next/server'

export default async function middleware(req: NextRequest) {
    const path = req.nextUrl.pathname;

    const session = await getToken({
        req,
        secret: process.env.NEXTAUTH_SECRET,
    });
    if (!session) {
        return NextResponse.redirect(new URL('/login', req.url))
    } else if (session && (path === '/login' || path === '/signup')) {
        return NextResponse.redirect(new URL('/', req.url))
    }
    return NextResponse.next()
}

¿Hay una manera de proteger todas las rutas así sin middleware o hacer una función sin redirecciones? Gracias

Respuesta #1

Ocurre porque escribiste un if con solo una condición (!session), luego siempre redirigía a la misma ruta (/login) causando demasiadas redirecciones a la misma ruta.

Para resolver el problema, cambia el if a !session && path !== "/login"

Artículos relacionados