NextJS中间件在检查令牌时返回空白屏幕

jtjikinw  于 2023-10-18  发布在  其他
关注(0)|答案(1)|浏览(91)

我做了一个Spotify克隆使用它的API和使用Next JS中间件来实现重定向条件,这是检查用户是否有令牌或没有,如果没有重定向到登录页面.
但由于某种原因,它返回我空白白色屏幕。
下面是middleware.ts文件的代码

import { getToken } from "next-auth/jwt";
import { NextResponse, NextRequest } from "next/server";

export async function middleware(request: NextRequest) {
    const token = await getToken({ req: request, secret: process.env.JWT_SECRET });

    const { pathname } = request.nextUrl;

    if (pathname.includes("/api/auth") || token) {
        return NextResponse.next();
    }

    if (!token && pathname !== '/login') {
        return NextResponse.rewrite(new URL('/login', request.url));
    }
}

文件夹结构

请帮帮我。你可以在这里参考完整的代码https://github.com/dipesh2508/Vibes

z9zf31ra

z9zf31ra1#

我看了一下你的中间件,似乎你正在阻止所有的JS资源,包括_next文件夹,这是加载应用程序本身所必需的。
请相应地修改您的条件,它将工作。对于初学者,您可以在下面使用。

if (!token && pathname !== '/login' && !pathname.includes("/_next/")) {
  return NextResponse.rewrite(new URL('/login', request.url));
}

请注意,您可能需要排除您的公共资产以及相同的。例如,favicon.ico

相关问题