Next auth v5 不占用基本路径

问题描述 投票:0回答:1

我最近从 next auth v4 升级到 v5 [5.0.0 beta.18] 。我在 next.config.js 文件中设置了基本路径 ['/ui/abc']。我正在使用天蓝色的广告提供商,并且在调用登录时,该路线没有获取我的应用程序的基本路径。如何设置 v5 身份验证的基本路径?从 next.config.js 文件中删除 basePath 后,身份验证按预期工作。

我尝试在providers数组下方的auth.ts文件中设置basePath,并删除了NEXTAUTH_URL表单.env文件,如docs

中给出的
next-auth
1个回答
0
投票

这里有一个开放的拉取请求总结了该问题:

更多讨论在这里:

从拉取请求的第一个链接中,建议的两个替代方案是:

  1. 安装 @k3k8 使用他们的说明建议的测试包(source):

    ...您可以使用以下方法测试我的代码:

    git clone -b fix-base-path https://github.com/k3k8/next-auth.git
    cd next-auth
    corepack enable pnpm
    pnpm install
    pnpm build
    cd packages/next-auth/
    pnpm pack
    

    这将生成一个名为

    next-auth-5.0.0-beta.20.tgz
    的包文件。

    将此文件移动到您的项目目录并通过更新您的

    package.json
    :

    来安装它
    {
      "dependencies": {
        "next-auth": "./next-auth-5.0.0-beta.20.tgz"
      }
    }
    

    然后运行

    pnpm install
    来更新您的依赖项。

  2. 使用@ThangHuuVu的解决方法(source):

    ...我的解决方法基本上是附加基本路径,如下所示:

    // app/api/auth/[...nextauth]/route.ts
    import { handlers } from "auth";
    import { NextRequest } from "next/server";
    
    const reqWithBasePath = (req: NextRequest, basePath = "/authjs") => {
      const baseUrl = new URL(
        (req.headers.get("x-forwarded-proto") ?? "https") +
          "://" +
          (req.headers.get("x-forwarded-host") ?? req.nextUrl.host)
      );
      const urlWithBasePath = new URL(
        `${basePath}${req.nextUrl.pathname}${req.nextUrl.search}`,
        baseUrl
      );
      return new NextRequest(urlWithBasePath.toString(), req);
    };
    
    export const GET = (req: NextRequest) => {
      const nextReq = reqWithBasePath(req);
      return handlers.GET(nextReq);
    };
    
    export const POST = (req: NextRequest) => {
      const nextReq = reqWithBasePath(req);
      return handlers.POST(nextReq);
    };
    

    https://github.com/ThangHuuVu/next-auth-behind-proxy/blob/cde4368b46fbda57157d62eaf1b93b258f5fadde/app/api/auth/%5B...nextauth%5D/route.ts

© www.soinside.com 2019 - 2024. All rights reserved.