Next-auth登录回调未触发即重定向至/signin的问题及解决
问题解决补充说明
将Node版本从18升级到20后,所有问题消失。
原问题描述
认证重定向异常
- 使用next-auth构建Next.js应用时,执行认证操作会从
api/auth/signin重定向回同一页面。客户端向http://localhost:3000/api/auth/callback/credentials发送包含csrfToken的POST请求,却收到302响应,被重定向至http://localhost:3000/api/auth/signin?csrf=true,最终返回登录页HTML。 - 测试过多种认证方式:T3应用默认的Discord认证、邮件魔法链接,以及从零搭建的credentials provider应用,起初均正常运行,之后突然全部出现相同的重定向问题。
- 此前在
session和jwt回调中添加了console.log,正常情况下会在终端输出内容,但出现重定向问题后,这些回调不再触发,终端无任何输出。
API接口错误
/api/route.ts接口本应返回authenticated: true/false的JSON数据,却抛出以下错误:
接口代码
import { getServerSession } from "next-auth"; import { authOptions } from "./auth/[...nextauth]/route"; import { NextResponse } from "next/server"; export async function GET(req: Request) { const session = await getServerSession(authOptions) return NextResponse.json({ authenticated: !!session }) }
错误日志
- error TypeError: Response.json is not a function at Function.json (webpack-internal:///(rsc)/./node_modules/next/dist/server/web/spec-extension/response.js:67:35) at GET (webpack-internal:///(rsc)/./app/api/route.ts:18:98) at process.processTicksAndRejections (node:internal/process/task_queues:95:5) at async eval (webpack-internal:///(rsc)/./node_modules/next/dist/server/future/route-modules/app-route/module.js:254:37)
注意:代码中明确返回的是NextResponse.json,但错误日志显示的是Response.json类型错误,怀疑该错误与认证重定向异常是否存在关联。
内容的提问来源于stack exchange,提问作者J6rms
相关产品推荐
相关产品推荐

