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

部署在Azure Web App的Passport中req.user为undefined的问题求助

问题分析与修复方案

核心问题

前后端分别部署在Azure Web App,Passport Google OAuth认证在本地HTTP环境正常,但Azure HTTPS环境下/auth/login/success路由中req.user返回undefined。已确认serializeUser能正常获取Google用户数据、浏览器已生成Cookie,且添加了trust proxy配置。


具体修复步骤

1. 修复Cookie跨域与安全配置

Azure是HTTPS环境,跨域场景下Cookie必须配置正确的secure和sameSite属性,否则浏览器会拒绝携带Cookie到后端。修改cookieSession配置:

app.use(
  cookieSession({
    name: "session",
    keys: [process.env.COOKIE_SESSION_KEY],
    maxAge: 24 * 60 * 60 * 1000,
    // 生产环境强制HTTPS Cookie
    secure: process.env.NODE_ENV === "production",
    // 跨域场景必须设为none,且需配合secure: true
    sameSite: process.env.NODE_ENV === "production" ? 'none' : 'lax',
    httpOnly: true, // 增强Cookie安全性,避免前端JS访问
  })
);

2. 修正路由挂载错误

后端index.js中重复挂载了authRouter到多个路径,导致路由路径冲突,session无法正确关联。删除多余的路由挂载,只保留一次:

const authRouter = require("./routes/auth");
app.use("/auth", authRouter);

// 删除以下重复挂载的代码
// const successRouter = require("./routes/auth");
// app.use("/login/success", successRouter);
// const failedRouter = require("./routes/auth");
// app.use("/login/failed", failedRouter);

前端调用路径process.env.REACT_APP_BE_URL+"/auth/login/success"本身正确,无需修改。

3. 开启Azure ARR Affinity设置

进入Azure Portal的后端Web App -> 配置 -> 常规设置,确保ARR Affinity设置为On。该选项保证同一用户的请求被路由到同一服务器实例,避免session跨实例丢失。

4. 验证Google OAuth回调地址

确认Google Cloud Console中配置的授权重定向URI是后端的完整HTTPS地址,例如:
https://your-backend-app-name.azurewebsites.net/auth/google/callback

5. 排查deserializeUser执行情况

在Passport配置中添加deserializeUser日志,确认session是否被正确解析:

passport.deserializeUser((user, done) => {
  console.log("Deserializing user:", JSON.stringify(user));
  done(null, user);
});

如果日志没有输出,说明Cookie没有被后端正确接收,回到Cookie配置和CORS设置检查。

6. 确认CORS Origin配置

确保process.env.HOST是前端Web App的完整HTTPS地址(如https://your-frontend-app-name.azurewebsites.net),无多余斜杠或协议错误。


验证流程

  1. 部署修改后的后端代码到Azure
  2. 清空浏览器缓存与Cookie,重新发起OAuth登录流程
  3. 查看后端日志,确认deserializeUser触发且req.user正常赋值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 19:44:57