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 
    } 
} 
相关问题