【问题标题】:AngularJS and Firebase AuthenticationAngularJS 和 Firebase 身份验证
【发布时间】:2013-02-21 11:19:18
【问题描述】:

我想通过 Firebase 后端向我的 AngularJS 应用程序添加身份验证机制。要求很简单:

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

here 描述的可能解决方案做出以下假设:

我的解决方案假定以下服务器端行为:对于每个 /resources/* 调用,如果用户未被授权,则响应 401 状态

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

任何帮助和/或实现此类 AngularJS+Firebase 集成的示例将不胜感激!

【问题讨论】:

    标签: angularjs firebase firebase-security angularjs-authentication


    【解决方案1】:

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

    当用户通过 Firebase 进行身份验证时,在客户端上保存一些记录,例如在本地存储、一些无所不包的控制器或您自己的 Angular service(我的首选选项)中。

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

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

    【讨论】:

    • 感谢您的回答。 Related question
    • 嗨,bennlich,您的意思是将 FirebaseAuthClient 返回的身份验证信息存储在 Angular 服务 ($rootScope) 中。所以下次我们只从 $rootScope 获取信息而不调用 FirebaseAuthClient?
    • @vzhen 在此处查看我对您的 SO 问题的回答:stackoverflow.com/questions/17026374/…。一般来说,通过服务共享数据比通过 $rootScope 更好(为了模块化,这样你的 $rootScope 属性不会被意外覆盖)。
    【解决方案2】:

    我最近有同样的要求,偶然发现了这篇博文。 http://www.42id.com/articles/firebase-authentication-and-angular-js/

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

    【讨论】:

      【解决方案3】:

      如果您使用 Firebase 简单登录(而不是在您自己的服务器上生成身份验证令牌),您可以在此处查看如何在客户端检测您的登录状态: Displaying text after login

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-01-08
        • 1970-01-01
        • 2022-01-20
        • 2018-04-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多