似乎其他人也有类似的问题,但方向正好相反...因此,尝试设置google身份验证,并在"/auth/google“上设置对passport的调用
app.get('/auth/google', passport.authenticate('google', { scope : ['profile', 'email'] }));
// the callback after google has authenticated the user
app.get('/auth/google/callback',
passport.authenticate('google', {
successRedirect : '/internal',
failureRedirect : '/login',
failureFlash : true
}));这是有效的,如果我去127.0.0.1/auth/google,我会得到google login。
然后,我创建了一个请求登录的按钮
<a href="/auth/google"><button type="button" class="btn btn-default btn-lg">
<span class="glyphicon glyphicon-star" aria-hidden="true"></span> Login (Admin)
</button></a>该按钮会将您转到127.0.0.1/auth/google,ngrouter会将其视为另一种情况(.otherwise({ redirectTo: "/" });)
这就是我的问题所在。直接调用服务器,它可以工作,但是,如果我通过angular调用它,路由器就会接收它。那么我如何强制"angular“向服务器请求页面呢?
auth set all被定义为app.get (根据上面的示例)。我不知道这是否因为我不是将这些定义为特快路线,而是将它们定义为module.export。在这种情况下,有没有一种方法可以直接告诉express拿起这些并在内部或类似的地方转发它们。
发布于 2015-09-10 22:23:47
其他人已经知道了。
AngularJS HTML5 Routing Enabled : Passing URL Back to server?
我想出来了!:)解决方案是将target='_self‘添加到您的锚标签中。任何其他目标值也可以;"_blank“、"_top”等等。我在IE9、10、Chrome40-43、Opera25-29和Safari5.1中进行了测试
https://stackoverflow.com/questions/32500393
复制相似问题