Angularjs 使用javascript fullstack的Passport google身份验证

Angularjs 使用javascript fullstack的Passport google身份验证,angularjs,express,mean-stack,passport.js,Angularjs,Express,Mean Stack,Passport.js,我正在尝试在我的应用程序中添加带有passport的google身份验证,它是使用yeoman fullstack生成器生成的 在我的登录控制器中,我有以下请求: $scope.googleAuth=function(){ $http.get('/auth/google'); }; 但是当我调用这个函数时,我有一个错误: XMLHttpRequest无法加载https://accounts.google.com/o/oauth2/auth?response_type=code&redirect

我正在尝试在我的应用程序中添加带有passport的google身份验证,它是使用yeoman fullstack生成器生成的

在我的登录控制器中,我有以下请求:

$scope.googleAuth=function(){
$http.get('/auth/google');
};
但是当我调用这个函数时,我有一个错误:

XMLHttpRequest无法加载https://accounts.google.com/o/oauth2/auth?response_type=code&redirect_uri=h…d=。请求的资源上不存在“Access Control Allow Origin”标头。起源'http://localhost:9000因此,不允许访问。

我尝试在我的express.js文件中添加中间件层来解决该问题:

app.use(函数(请求、恢复、下一步){
//您希望允许连接的网站
res.setHeader('Access-Control-Allow-Origin','http://localhost:9000');
//请求您希望允许的方法
res.setHeader('Access-Control-Allow-Methods'、'GET、POST、OPTIONS、PUT、PATCH、DELETE');
//您希望允许的请求头
res.setHeader('Access-Control-Allow-Headers','X-request-With,content-type');
//如果您需要网站在发送的请求中包含cookie,请设置为true
//到API(例如,如果您使用会话)
res.setHeader('Access-Control-Allow-Credentials',true);
//传递到中间件的下一层
next();
});
但它仍然不起作用。
这是正确的解决方案吗?安全吗?

我用超链接而不是按钮解决了这个问题,如下所示

<a target="_self" href="/auth/google" class="btn btn-danger">Google+</a>


我使用了
target=“\u self”
,否则angular会重定向到主页,因为我认为,它将
/auth/google
视为我的应用程序的一条路径。

你如何将auth(即用户对象)的结果传递回你的控制器?+1个救生圈..在这一条上花费超过3小时。:)非常感谢。