使用Passportjs从Angularjs(http get / resource)进行用户身份验
我试图使用带有Angular的Passportjs并表达.我试图在passportjs中测试facebook策略.
身份验证似乎成功但未导航到回调网址.它简单化了. Firebug控制台显示: 然而,当我手动点击此网址但不自动重定向时,它会在浏览器窗口中成功打开回调网址(索引) 我的登录视图(jade)如下所示: 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& amp;节点js 编辑:更确切地说,只有当我的请求是从客户端(Angular中的登录页面)到我的快速服务器时才会出现问题. 当服务器使用passportjs处理身份验证时,我们是否可以不从客户端(使用http get / post)向服务器发出身份验证请求? 解决方法
我目前正在尝试做同样的事情并遇到问题,但也许我可以澄清一些事情并提出一些建议.
在幕后,PassportJS的Facebook战略正在使用OAuth.通过使用这种方法,它将所有身份验证卸载到Facebook的服务器上.当您单击带有href =“/ auth / facebook”的链接时,您的快速服务器会将用户重定向到Facebook,然后再返回到您的应用程序.必须这样做以确保安全的身份验证,否则有人可能声称他们是Facebook并且自己“验证”用户.这也是为什么调用Angular $http.get(“/ auth / facebook”)不起作用的原因,它只是返回302重定向. 不幸的是,这是挑战的地方.如果您只是包含一个带有href“/ auth / facebook”的链接,服务器将对用户进行身份验证并返回到您的应用程序,但Angular无法知道您的用户已经过身份验证.我在https://github.com/enginous/angular-oauth找到了一个有角度的oauth示例,但我在消化它时遇到了一些麻烦.基本上他正在使用弹出窗口打开身份验证链接,在您的情况下为“/ auth / facebook”,并使用浏览器$window.postMessage与用户进行身份验证后收到的访问令牌通信回到他的主应用程序窗口然后关闭弹出窗口. 我认为这可能是最好的方法,但我仍然没有使用Passport.我很想听到其他人的想法/意见,因为我还是刚刚接触Angular的新人! 更新: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |