2017-06-02 82 views
0

我有一個我想限制訪問的iOS應用程序,使其僅適用於來自特定電子郵件域的用戶。 該應用要求用戶使用他們的Google帳戶登錄。 我發現不同的答案,網上說建議增加如何限制用戶註冊僅限Firebase中的某些域名?

".read": "auth.token.email.endsWith('gmail.com')" 

但是,這似乎並沒有在登錄頁面返回一個錯誤,但只有當有問題的用戶嘗試訪問該數據庫。有什麼建議麼?

回答

0

包含電子郵件和密碼註冊選項,只是檢查你的應用程序中的域。這將是一個簡單的字符串比較測試的電子郵件地址。

或者只是啓動一個服務器,您將向其發送電子郵件以進行驗證。這樣,每次添加額外的域時,您都不必推出新的更新。您可以嘗試查看cloud functions是否有幫助,而不是啓動新的服務器。

0

您必須執行該操作。您有多種工具,這樣做:

  1. signInWithCredential解決後,可以檢查域,它是一個google.com提供商。如果您允許電子郵件/密碼用戶,則還需要驗證這些用戶。如果用戶不符合您的條件,請使用用戶的刪除API,並向用戶發出錯誤消息,以便他們需要使用特定帳戶登錄。

  2. 在您的規則中執行檢查,因爲您無法始終信任客戶端。確保用戶註冊並且不被刪除,他/她無法訪問數據。

  3. 使用具有用於創建用戶的觸發器的Firebase函數。在創建用戶時,檢查符合條件,如果不符合,則使用firebase-admin模塊刪除該用戶。

  4. 如果您使用iOS的Google登錄庫獲取Google憑據,那麼您可以先在Firebase中對SignInWithCredential進行簽名並阻止登錄嘗試,然後檢查Google用戶電子郵件和Google ID令牌。

  5. 編寫自己的清理腳本:如果您要託管自己的服務器並且不想使用Firebase函數,則可以運行每日腳本,使用Firebase CLI SDK下載所有用戶,然後刪除所有使用firebase-admin SDK與您的條件不符。

相關問題