4

我想向带有Firebase后端的AngularJS应用添加身份验证机制。要求很简单:AngularJS和Firebase身份验证

  • 经过身份验证的用户应该可以访问任何页面。
  • 如果未经身份验证的用户转到/some_page(除/login之外的任何页面),应将其重定向到/login。一旦他们输入正确的凭证,他们应该被重定向回/other_page
被描述 here

可能的解决方法作如下假设:

我的解决方案有如下假定服务器端的行为:每 /资源/ *调用,如果用户没有被授权,响应401状态

但是,我不确定在使用Firebase作为后端时是否可以强制执行此行为。

任何帮助和/或示例来实现这种AngularJS + Firebase集成将不胜感激!

回答

2

一个解决方案是使用$route服务在客户端执行路由。

当用户通过Firebase进行身份验证时,请在客户端上保存一些记录,如localstorage,一些全能控制器或您自己的Angular service(我的首选选项)。

在您的路由控制器中,如果用户通过身份验证,请重定向到/some_page,否则重定向到/login并跟踪用户打算去的$location

另一方面,如果您要使用服务器进行路由,则可以使用having your server generate Firebase auth tokens链接的解决方案。

+0

感谢您的回答。 [相关问题](http://stackoverflow.com/q/15024253/247243) – 2013-02-22 12:30:13

+0

嗨bennlich,你的意思是存储从FirebaseAuthClient在Angular服务($ rootScope)中返回的auth信息。那么下次我们只需从$ rootScope获取信息而不调用FirebaseAuthClient? – vzhen 2013-06-09 17:12:41

+0

@vzhen在这里看到我的答案你的SO问题:http://stackoverflow.com/questions/17026374/angularjs-should-i-rootscope-data-returned-from-firebase/17029756#17029756。通常情况下,通过服务共享数据比通过$ rootScope共享更好(为了模块化,并且不会意外覆盖$ rootScope属性)。 – bennlich 2013-06-10 17:49:40

0

如果您正在使用火力地堡简单登录(而不是生成自己的服务器上的认证令牌),你可以看到如何在这里检测到您的登录状态的客户端: Displaying text after login

1

最近我有同样的要求并遇到这篇博文。 http://www.42id.com/articles/firebase-authentication-and-angular-js/

它解释了如何设置与Firebase交互的Angular JS应用程序。还包括使用Firebase API对照OAuth提供商(如Google+和Github)进行身份验证的方法,基于身份验证状态的路由,在Firebase上存储用户个人资料信息以及在Firebase上设置安全规则以保护用户数据。