You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Next.js使用Middleware+Next-Auth保护路由时出现登录循环问题求助

Next.js使用Middleware+Next-Auth保护路由时出现登录循环问题求助

大家好,我最近在做Next.js项目,想用Middleware配合Next-Auth来保护特定路由,本来预期是未认证用户访问这些路由时会被引导到登录页,但现在遇到了一个头疼的循环问题:就算我已经完成认证登录,访问/room/:id*这类路由时,还是会被重定向到登录页面;等我再次登录后,又会被跳转回目标路由,紧接着又触发重定向到登录页,无限循环下去。

我是按照Next-Auth文档来写的Middleware文件,代码如下:

export { default } from "next-auth/middleware";

export const config = {
  matcher: "/room/:id*"
};

下面是我的Next-Auth API路由代码(app/api/auth/[...nextauth]/route.ts):

import NextAuth from "next-auth";
import GoogleProvider from "next-auth/providers/google";
import { PrismaClient } from "@prisma/client";
import { generateRandomString } from "@/utils/random";

const prisma = new PrismaClient();

const handler = NextAuth({
  providers: [
    GoogleProvider({
      clientId: process.env.GOOGLE_CLIENT_ID!,
      clientSecret: process.env.GOOGLE_CLIENT_SECRET!,
      authorization: {
        params: {
          prompt: "consent",
          access_type: "offline",
          response_type: "code"
        }
      }
    })
  ],
  secret: process.env.JWT_SECRET!,
  callbacks: {
    async signIn({ user, profile }) {
      const existingUser = await prisma.user.findUnique({
        where: { email: user.email! }
      });

      if (!existingUser) {
        const randomSuffix = generateRandomString();
        const firstName = user.name?.split(" ")[0].toLocaleLowerCase();
        await prisma.user.create({
          data: {
            email: user.email!,
            name: user.name!,
            username: `${firstName}#${randomSuffix}`,
            image: user.image || profile?.image || null
          }
        });
      }

      return true;
    },
    async jwt({ token, user }) {
      if (user) {
        token.id = user.id;
      }
      return token;
    }
  }
});

export { handler as GET, handler as POST };

有没有朋友遇到过类似的问题?或者能帮我排查下哪里可能出错了?

备注:内容来源于stack exchange,提问作者Abdulhameed Mustapha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 13:27:58