0

我是Firebase的新用戶,我正嘗試創建用戶身份驗證。用戶對象具有:用戶名,電子郵件,全名,角色,密碼。使用Firebase進行基於角色的身份驗證

現在我希望能夠創造這些屬性的用戶和使用任何用戶名/電子郵件和密碼進行身份驗證。

認證後,我想檢查用戶的角色,以確定他們被允許訪問的我的應用程序的一部分。

我不知道如何去解決它,文檔主要只處理電子郵件和密碼。

+0

火力地堡剛剛推出了通過自定義用戶索賠ID令牌上基於角色的訪問支持:https://firebase.google.com/docs/auth/admin/custom-claims – bojeil

回答

1

Firebase目前僅支持電子郵件+密碼身份驗證,而不支持用戶名+密碼。 (當然,還有Facebook,Twitter,匿名等等)儘管如此,你仍然可以做你自己的定製認證。

你仍然可以在你提到的這些領域的數據庫中創建自己的用戶對象:(用戶名,電子郵件,全名,角色,密碼),但這些都是從火力的認證部分分開。這個過程,我會稱之爲「註冊」,這是由你來實施。

如果你想控制一下數據庫的部分不同的用戶可以訪問,那麼你在談論database rules

如果您想要控制對應用程序本身的不同部分的訪問,那麼您只需要以此方式對其進行編碼。

1

您可以像這樣構建您的數據庫,使用它們的$uid存儲每個用戶的信息,並保留每個用戶聲明的用戶名列表,以便您可以有一個寫入規則,防止覆蓋usernames中已有的用戶名。

因此,註冊後,您需要使用FIRAuth註冊電子郵件和密碼,然後完成後,您將獲得FIRUser。然後,您可以使用uid將用戶名,角色等寫入數據庫​​中的用戶位置,並在用戶名位置"usernames/$username": "$uid"處單獨輸入用戶名。

您需要實施"users/$uid""usernames/$username"的寫入/驗證規則,以確保用戶名尚未被佔用。

{ 
    "users": { 
     $uid: { 
      "username": "callam", 
      ... 
      "role": "member" 
     } 
    }, 
    "usernames": { 
     "callam": $uid 
    } 
} 
相關問題