客户端(angular度2)authentication,谷歌作为服务器(node.js)

在这里,我一直在寻找答案。

我有一个REST端点的nodejs服务器。 每个端点都有isLoggedIn中间件,所以我可以通过电子邮件对用户进行身份validation。

客户端在端口4200上运行,服务器在端口3113上运行。

我想基本上是让我的客户redirect到Google的同意屏幕,如果没有通过身份validation。 由于端口是不同的,我得到:

XMLHttpRequest cannot load https://accounts.google.com/o/oauth2/v2/auth?response_type=code&redirect_ur…d=604408607019-ha937stehe6s3nk7ea892rviihrq5n4s.apps.googleusercontent.com. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:4200' is therefore not allowed access.

现在,我还没有尝试过什么… 🙂

我尝试使用CLI代理function(这是一个webpackconfiguration),并将所有/api请求转发到服务器。

我已经添加头到服务器,但后来我意识到,这是谁发送这个错误,而不是我的服务器。

我在这里看到很多相关的post。 到目前为止,我所见过的最好的解决scheme是放置一个loginbutton,并将呼叫置于href ,因为我不能在域之间进行Ajax调用。

这真的是最好的解决scheme吗? 在服务器上运行身份validation代码时,是不是有其他方法可以从客户端进行身份validation?

我甚至将所有相关端口添加到了API开发者,并将callback调用添加到Google开发者控制台。

顺便说一句,当一个客户端从同一个端口服务时,所有的工作都很好。

谢谢。