'passport.authenticate(“ google”)'-React客户端不重定向

时间:2019-07-25 13:49:01

标签: javascript node.js reactjs express axios

我正在使用护照的Google策略, 该过程的一部分是客户端向“ / google”发送请求-然后,passport.authenticate应该将客户端重定向到google的api来选择用户。 但是,我的react客户端不会将自身重定向到此api。

router.get(
  "/google",
  passport.authenticate("google", {
    scope: ["profile", "email"]
  })
);
axios.get(`/google`).then(res => {});

我的浏览器出现错误-也许会有所帮助。

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://accounts.google.com/o/oauth2/v2/auth?response_type=c…-XXXXXXXXXXXXXXXXXXXXXXXXXXX.apps.googleusercontent.com. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).

请求已发送到google api,但页面(window.location)不变。

谢谢!

1 个答案:

答案 0 :(得分:0)

您基本上是在需要AJAX的地方进行redirect通话。

护照的作用是重定向到实际的外部身份验证提供程序域,并解密/理解从外部身份验证提供程序发送的访问代码。

因此,当您ajax护照路线时,它将在内部重定向,这是我们不希望的。我们想要一个实际的重定向,以便用户可以在AUTH Provider的站点中输入用户名和密码。

因此,基本上,每当您重定向到外部身份验证提供程序时,都需要重定向而不是AJAX。这就是axiosrequest无法正常工作的原因。您只需要使用hrefwindow.location.href打开路线即可。