繁体   English   中英

Node.js + Passport - 使用 Google oauth2 时出现意外重定向

[英]Node.js + Passport - Unexpected redirect when using Google oauth2

我正在使用护照中间件构建 node.js 服务器。 我正在尝试通过 Google 的 oauth2 对我的用户进行身份验证。

认证过程如下:

  1. 用户被重定向到<server>/auth/google ,它使用了护照的中间件: passport.authenticate("google", { scope: ["profile", "email"] })

  2. 然后用户会收到 Google 的登录页面并登录

  3. 然后谷歌将用户重定向到<server>/auth/google/callback ,它使用了护照的中间件: passport.authenticate("google", { failureRedirect: "/", session: false })

  4. 最后,用户被重定向到<client>?token=<token>

我在 Netlify 上托管我的项目前端,而在 NOW 上托管后端。

在 localhost 上运行时一切正常,但在生产中运行时,在第 3 步中出现意外重定向,其中用户被重定向到<server>/auth/google/t?token=<long-token-string>而不是提到的路径。

这种重定向背后的原因是什么? 有什么建议么?

谢谢,
奥菲克

在阅读和调试passport.jsoauth ,我终于发现了问题所在。 这是我的代码中的一个错误。

我在我的配置文件中使用了这个:

export const CLIENT_ORIGIN =
  process.env.NODE_ENV === "production"
    ? "https://<project-name>.netlify.com"
    : ["http://127.0.0.1:3000", "http://localhost:3000"];

因此,在 localhost 上运行时,在 StrategyOptions 中设置callbackURL = CLIENT_ORIGIN[1]是有意义的,但在生产环境中运行时CLIENT_ORIGIN收到值"https://<project-name>.netlify.com" (字符串而不是数组),因此CLIENT_ORIGIN[1]返回字符"t" 结果, callbackURL收到了值"t" ,这导致了这个不可预测的(和未记录的)重定向。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM