用户使用Passportjs从Angularjs(http get / resource)进行身份validation
我试图用Angular的Passportjs和expression。 我正在尝试在passportjs中testingfacebook策略。
身份validation似乎成功,但不会导航到callbackURL。 这个剧本挂了。
Firebug控制台显示:GET http:// localhost:7000 / auth / facebook 302 Moved Temporarily
它然而,当我手动点击这个url,但不会自动redirect在浏览器窗口中成功打开callbackurl(索引)
我的login视图(玉)看起来如下:
a(href='/auth/facebook') p Login
而服务器端路由是:
app.get('/auth/facebook', passport.authenticate('facebook')); app.get('/auth/facebook/callback', passport.authenticate('facebook', { failureRedirect: '/login' }), function(req, res) { res.render('index'); });
请帮助。 这是我第一次使用Angularjs&Node js
编辑 :更确切地说,这个问题只发生在我的请求是从客户端(Angular的login页面)到我的快递服务器。 如果我从快递内部提供login页面,则不存在任何问题。 authentication通过,并按预期重新导向到我的应用程序。
当服务器使用passportjs处理身份validation时,我们能不能从客户端(使用http get / post)向服务器发送身份validation请求?
我目前正在尝试做同样的事情,遇到问题,但也许我可以澄清一些事情,并提出一些build议。
在幕后,PassportJS的Facebook战略正在使用OAuth。 通过使用这种方法,它将所有的身份validation卸载到Facebook的服务器上。 当您点击一个带有href =“/ auth / facebook”的链接时,您的快递服务器会将用户redirect到Facebook,然后再返回到您的应用程序。 必须这样做才能确保安全的身份validation,否则有人可能会声称自己是Facebook并“自我authentication”用户。 这也是为什么调用Angular $ http.get(“/ auth / facebook”)不起作用,它只是返回一个302redirect。
不幸的是,这是它的挑战性。 如果你仅仅包含一个href“/ auth / facebook”的链接,服务器将authentication用户并返回到你的应用程序,但是Angular没有办法知道你的用户已经被authentication了。 我在https://github.com/enginous/angular-oauth发现了一个angular-oauth的例子,但是在消化它的时候遇到了一些麻烦。 从本质上讲,他使用popup窗口打开身份validation链接,在你的情况下“/ auth / facebook”,并使用浏览器$ window.postMessage与他的主应用程序窗口与他一旦用户通过身份validation然后closurespopup窗口。
我认为这可能是最好的方法,但我还没有得到这与护照工作。 愿意听到一些其他的想法/意见,因为我仍然对Angular也是新的!
更新:我最近遇到这个博客文章http://www.frederiknakstad.com/authentication-in-single-page-applications-with-angular-js/显示了一个使用Passport的Facebook战略与Angular的例子。 他似乎在成功validation后设置cookie,并在加载页面时对Cookie进行angular度轮询。 这可能是更简单的解决scheme。
我遇到了同样的问题,问题是angular度如何发送请求。 我开始使用$http.get
,它到达了我的节点服务器,但正如你所说,挂在那里。 当我切换到$window.location.href
它完美的工作,因为这个要求可以链接。
- 将文件附加到FormData不能在angularjs中工作
- 使用Angularfire,Passport和Express / Nodejspipe理会话
- Angular没有响应任何路由与ui路由器 – URL只是消失时,我进入
- 在Heroku上部署AngularJs + webpack + gulp
- 使用node.js插入到MongoDB的重要错误对于某些没有包含点的键的对象会失败?
- AngularJS:http链调用和NodeJS的问题:在多个http调用中使用variables的问题
- 使用命名约定的W / Breeze Angular mySql Node Express堆栈的exception
- 使用nodejs通过名称从集合中检索对象
- 在Node.js中部署angularjs应用程序