在托管版本上的 React.js 和 Node.js 中使用 Passportjs 进行 Google 身份验证后无法验证登录是否成功(本地工作正常)

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

描述

我的应用程序的 Google OAuth2 身份验证流程遇到了问题。身份验证过程在我的本地系统上完美运行,但是当我托管应用程序并尝试进行身份验证时,它失败了。以下是问题的详细说明以及我所采取的步骤:

问题

身份验证成功后,服务器会正确重定向,但是当尝试使用

/login/success
路由验证身份验证时,会失败。

收到错误

尝试从前端访问

/login/success
路由时,我收到 Axios“网络错误”。错误消息表明存在网络问题,但我不确定为什么会发生。

后端代码(Node.js 和 Passport.js)

app.get("/login/sucess", async (req, res) => {
  if (req.user) {
    res.status(200).json({ message: "user is logged in", user: req.user });
  } else {
    res.status(400).json({ message: "Not Authorized" });
  }
});

前端请求登录验证:

const getUser = async () => {
  try {
    const response = await axios.get(
      "https://loginwithgooglemern.onrender.com/login/sucess",
      { withCredentials: true }
    );
    setUserdata(response.data.user);
  } catch (error) {
    console.log("error", error);
  }
};

其他详细信息:

  • 我已在后端配置 CORS 以允许来自前端域的请求。
  • Google 开发者控制台中的重定向 URI 配置正确。img from googlewebconsole
  • 身份验证后,Cookie 似乎已正确设置(通过浏览器的开发人员工具确认)。
  • 这是用于测试的托管应用程序的链接
  • GitHub 存储库供参考:GitHub 存储库链接

本地系统上的一切都工作得很好,但是当我尝试托管它然后尝试进行身份验证时,身份验证部分也可以工作并且服务器成功重定向,但随后出现了问题......我写了一个“/login/success” " 验证用户是否已成功通过身份验证的路由。

我希望应用程序在托管版本上正常工作,但我认为不知何故,cookie 没有在托管版本上正确发送,因为我没有找到“/login/success”路由不返回的任何其他原因对于登录用户来说为 true...

这里还有验证用户身份后网站的 cookie: screenshot of the cookies for the website

我已经添加了所有必需的信息...过去 15 天我一直在解决这个问题,任何帮助将不胜感激...谢谢

reactjs node.js google-oauth google-signin passport-google-oauth2
1个回答
0
投票

嘿,我也遇到了同样的错误问题:成功 google 登录后,cookie 被设置在前端,但是当我向 auth/google/success 发出后续请求时,该请求不会携带 cookie。所以我收到“未经授权”错误。

如果您得到任何解决方案,请在此处提及。

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