2016-09-07 42 views
0

我開發一個Android應用程序,其需要能夠管理用戶列表。問題是,與用戶自行註冊並管理自己帳戶的社交應用程序相比,Firebase似乎沒有爲這種情況提供太多支持。我可以在Firebase控制檯中創建用戶,但這還不夠。管理火力地堡用戶在應用程序

用戶是通過電子郵件和密碼進行註冊,有些用戶必須擁有管理員權限,並允許修改用戶列表,我可以強制執行此使用安全規則。但是,Firebase控制檯中列出的用戶沒有任何地方可以爲權限提供額外信息,因此此信息必須位於主數據庫中。在控制檯中編輯數據庫樹是不合理的,因此必須在應用程序中完成。

第一個問題是,有沒有辦法讓來自應用程序的用戶列表。作爲解決方法,我只能在應用程序中使用createUserWithEmailAndPassword()函數創建用戶。然後,我可以將額外的用戶信息保存在主數據庫中,並保持同步。

除了一些小問題(例如新創建的用戶自動登錄,註銷admin用戶),該功能開始失敗並且錯誤日誌指示「TOO_MANY_ATTEMPTS_TRY_LATER」。這是不可接受的。

任何建議將不勝感激。謝謝。

+0

對於新用戶簽約全自動檢查小問題[這個答案](http://stackoverflow.com/a/38013551/4916627) –

+0

什麼是你的問題? –

+0

@Frank van Puffelen我的問題是如何規避太多的嘗試錯誤,或者如何以其他方式爲用戶分配權限。 –

回答

1

用戶是通過電子郵件和密碼進行註冊,有些用戶必須 具有管理員權限,並允許修改用戶列表,我可以 執行本使用安全規則。然而,在 火力地堡控制檯中列出的用戶沒有任何地方放了 權限的額外信息,所以此信息必須在主數據庫中去

你應該爲管理員單獨worflow這將增加管理員UID到數據庫節點「管理員」。

然後,每當你需要檢查,如果你的用戶是利用規則,你可以管理員使用類似於 「.WRITE」:‘root.child(‘管理員/’+ $ USER_ID).exists()’

創建並登錄其他用戶似乎很直觀給我,我會建議使用dynamic links的邀請,讓邀請的用戶,安裝應用程序,創建自己的用戶,並在自己的簽名。然後,您可以使用動態鏈接信息來查看邀請誰並相應採取行動的人員。

+0

添加管理員的UID到一個數據庫節點是一個問題,因爲沒有辦法得到應用中的所有用戶的UID列表(複製粘貼和控制檯每個UID是不是合理的)。這就是我自己創建用戶的原因。我創建它們後立即獲得UID。使用邀請也不行,想想管理員將職員列表輸入數據庫併爲其分配角色的更嚴重的應用程序。不過謝謝你的回答。 –

+0

爲了澄清,我知道如何使用您建議的安全規則。問題是以編程方式獲得UID。 –

+0

在某些時候,您將用戶設置爲管理員,無論是在創建時還是手動創建時,都應該有權訪問該用戶的UID。如果其他用戶負責創建自己的記錄,那麼定義一個特殊的動態鏈接或工作流程,在我註冊後,如果我是管理員,則將我的UID記錄到管理員節點。 – jirungaray