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

Auth.js v5生产环境Google登录成功后重定向至localhost问题

问题:NextAuth Google登录部署到AWS后重定向至localhost:3000

我的Google登录动作代码

"use server";

import { AuthError } from "next-auth";
import { signIn } from "@/auth";


export const googleLogin = async () => {

  try {
    await signIn("google",{
      redirectTo: "/",
    });
  } catch (error) {
    if (error instanceof AuthError) {
      switch (error.type) {
        case "OAuthCallbackError":
          return { error: "Google login failed!" };
        default:
          return { error: "Something went wrong!" };
      }
    }

    throw error;
  }
};

问题现象

本地环境运行正常,可成功登录。但部署到AWS后,登录成功会自动重定向至https://localhost:3000。

已尝试的无效操作

  • 设置环境变量AUTH_REDIRECT_PROXY_URL=https://www.yourdomain.com
  • 在auth.ts中配置重定向逻辑,代码片段如下:
...
    async signIn({ user, account, profile, email, credentials }) {
      return true
    },
    async redirect({ url, baseUrl }) {
      return baseUrl
    },
...
}

解决步骤

1. 强制设置NEXTAUTH_URL环境变量

部署环境必须配置NEXTAUTH_URL=https://www.yourdomain.com,这是NextAuth识别生产环境域名的核心变量,优先级高于其他重定向配置。

2. 修正auth.ts的redirect逻辑

当前逻辑直接返回baseUrl,未正确处理登录后的目标路径。修改为:

async redirect({ url, baseUrl }) {
  // 校验并返回合法的重定向地址
  if (url.startsWith(baseUrl) || url.startsWith("/")) {
    return url.startsWith("http") ? url : `${baseUrl}${url}`;
  }
  return baseUrl;
}

3. 检查AWS代理层配置

如果使用ALB或CloudFront,确保:

  • 正确传递X-Forwarded-Proto、X-Forwarded-Host请求头,Next.js依赖这些头识别真实域名与协议
  • 代理层无强制重定向到localhost的规则

4. 更新Google OAuth回调地址

登录Google Cloud Console,确认OAuth客户端的已授权回调地址为https://www.yourdomain.com/api/auth/callback/google,删除残留的localhost地址并保存配置。

5. 移除signIn中的redirectTo参数(可选)

若上述操作无效,可尝试删除signIn调用里的redirectTo: "/",让NextAuth基于NEXTAUTH_URL自动处理重定向。

内容的提问来源于stack exchange,提问作者YAN MING HUANG

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 17:18:12