我是Firebase的新用户,我正尝试创建用户身份验证。用户对象具有:用户名,电子邮件,全名,角色,密码。使用Firebase进行基于角色的身份验证
现在我希望能够创造这些属性的用户和使用任何用户名/电子邮件和密码进行身份验证。
认证后,我想检查用户的角色,以确定他们被允许访问的我的应用程序的一部分。
我不知道如何去解决它,文档主要只处理电子邮件和密码。
我是Firebase的新用户,我正尝试创建用户身份验证。用户对象具有:用户名,电子邮件,全名,角色,密码。使用Firebase进行基于角色的身份验证
现在我希望能够创造这些属性的用户和使用任何用户名/电子邮件和密码进行身份验证。
认证后,我想检查用户的角色,以确定他们被允许访问的我的应用程序的一部分。
我不知道如何去解决它,文档主要只处理电子邮件和密码。
Firebase目前仅支持电子邮件+密码身份验证,而不支持用户名+密码。 (当然,还有Facebook,Twitter,匿名等等)尽管如此,你仍然可以做你自己的定制认证。
你仍然可以在你提到的这些领域的数据库中创建自己的用户对象:(用户名,电子邮件,全名,角色,密码),但这些都是从火力的认证部分分开。这个过程,我会称之为“注册”,这是由你来实施。
如果你想控制一下数据库的部分不同的用户可以访问,那么你在谈论database rules。
如果您想要控制对应用程序本身的不同部分的访问,那么您只需要以此方式对其进行编码。
您可以像这样构建您的数据库,使用它们的$uid
存储每个用户的信息,并保留每个用户声明的用户名列表,以便您可以有一个写入规则,防止覆盖usernames
中已有的用户名。
因此,注册后,您需要使用FIRAuth
注册电子邮件和密码,然后完成后,您将获得FIRUser
。然后,您可以使用uid
将用户名,角色等写入数据库中的用户位置,并在用户名位置"usernames/$username": "$uid"
处单独输入用户名。
您需要实施"users/$uid"
和"usernames/$username"
的写入/验证规则,以确保用户名尚未被占用。
{
"users": {
$uid: {
"username": "callam",
...
"role": "member"
}
},
"usernames": {
"callam": $uid
}
}
火力地堡刚刚推出了通过自定义用户索赔ID令牌上基于角色的访问支持:https://firebase.google.com/docs/auth/admin/custom-claims – bojeil