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上設置安全規則以保護用戶數據。