You need to enable JavaScript to run this app. Next Auth集成Azure B2C部署后next-auth.callback-url指向localhost问题
优惠活动
大模型
产品
解决方案
定价
更多

Next Auth集成Azure B2C部署后next-auth.callback-url指向localhost问题

问题根源

Next Auth 在部署环境未正确读取到线上域名配置,默认 fallback 到 http://localhost:3000,导致回调地址、Cookie 域名全部指向本地地址。

修复步骤

1. 检查环境变量取值逻辑

你提到所有环境变量都加了NEXT_PUBLIC前缀,首先确认两点:

  • 部署平台的环境变量配置中,对应变量(比如NEXT_PUBLIC_NEXTAUTH_URL)的值为你的完整线上域名,格式为https://你的域名.com,不要加末尾斜杠
  • 你的config文件中,NEXTAUTH_URL的取值和环境变量名完全匹配,不要出现变量名写错的情况,不要硬编码默认值为http://localhost:3000,如果要加默认值也仅在开发环境生效:
// config 文件示例
export const NEXTAUTH_URL = process.env.NODE_ENV === 'development' 
  ? 'http://localhost:3000' 
  : process.env.NEXT_PUBLIC_NEXTAUTH_URL

2. 显式指定 NextAuth 根域名

在你的[...nextAuth.tsx]的NextAuthOptions配置中新增site参数,强制指定根域名,优先级高于环境变量默认读取逻辑:

const options: NextAuthOptions = {
    site: NEXTAUTH_URL, // 新增这一行
    session: {
        jwt: true,
    },
    // 其余原有配置保持不变
}

3. 修正 redirect 回调(可选,规避安全风险)

你当前的 redirect 回调直接返回传入 url 存在跨站跳转风险,改成官方推荐写法:

callbacks: {
    redirect: async ({ url, baseUrl }) => {
        // 仅允许同域跳转
        if (url.startsWith('/')) return `${baseUrl}${url}`
        if (new URL(url).origin === baseUrl) return url
        return baseUrl
    },
}

4. 验证配置生效

部署后先清空浏览器原有 Cookie,再重新访问站点,查看next-auth.callback-urlCookie 的值是否已经替换为你的线上域名,如果跳转 OAuth 后报错,再检查 Azure B2C 应用注册的重定向 URI 中是否添加了线上地址https://你的域名.com/api/auth/callback/azureb2c。

内容的提问来源于stack exchange,提问作者syroman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 01:48:00