reactjs NextJS中间件导致“localhost重定向您太多次”错误

b5buobof  于 2023-04-20  发布在  React
关注(0)|答案(1)|浏览(270)

我刚刚使用NextAuth在本地托管的NextJS应用程序中实现了电子邮件/密码身份验证。当我创建中间件来保护路由时,每当我单击注销按钮时,我都会收到错误“localhost redirected you too many times”。x1c 0d1x
这是我的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()
}

有没有一种方法可以保护所有的路由,而不需要中间件,或者不需要重定向就可以实现功能?

vyswwuz2

vyswwuz21#

这是因为你只写了一个条件(!session)的if,然后总是重定向到同一个路由(/login),导致太多的重定向到同一个路由。
要解决此问题,请将if更改为!session && path !== "/login"

相关问题