2016-02-07 107 views
5

有沒有辦法在安全規則中安全地獲取他們所使用的電子郵件。根據用戶oauth電子郵件設置安全規則firebase

理想我想創建這樣一個規則:那整個應用程序或應用程序的部分被固定到一個電子郵件地址後綴

{ 
    ".read": "auth.google.email.matches(/@example.com$/)" 
    ".write": "auth.google.email.matches(/@example.com$/)" 
} 

。這是管理我的應用程序的一種更容易的方式,因爲用戶將根據他們擁有的公司電子郵件被授予訪問權限,全部或全部無法訪問。

另一種方法是將用戶的電子郵件地址保存到數據庫,然後他們不能寫入我相信我可以實現類似的過程。

回答

3

驗證。安全規則中不提供OAuth提供程序的屬性。根據documentation on the auth variable

在進行身份驗證之前,預定義的auth變量爲空。一旦用戶被火力地堡登錄的身份驗證方法,驗證,它包含以下屬性:

提供商使用(「密碼」的身份驗證方法,「無名氏」,「臉譜」,「github上」,「谷歌」,或「推特」)。

uid一個唯一的用戶ID,保證在所有提供者中都是唯一的。

因此,您不能保護基於電子郵件地址的數據,除非您涉及服務器以安全的方式提供電子郵件域。

一旦涉及服務器,您可以:

  • 確認電子郵件地址,並存儲驗證的電子郵件地址在數據庫中。然後,你可以用類似root.child('users').child(auth.uid).child('emailDomain').val()
  • mint your own tokens包括電子郵件域,因此,它與像auth.emailDomain您的安全規則成爲在該auth變量可以訪問它在你的安全規則。
相關問題