我是Android新手,想要将两种不同类型的用户添加到一个项目UID中:一个是主管,另一个是主持人。
但是我无法弄清楚如何做到这一点是有办法的。我该怎么办?
这是我的Firebase数据库:
答案 0 :(得分:1)
你正在以错误的方式解决这个问题。每个用户都有一个唯一的UID。将它们保存在数据库中
users :
uid1 :
email: ****
role: moderator
uid2 :
email: ****
role: supervisor
...
或者如果一个人可以拥有多个角色,您可以使用这样的标志:
users :
uid1 :
email: ****,
isMod: true,
isSup: false,
uid2 :
email: ****,
isMod: true,
isSup: true,
...
因此,例如,uid2既是主持人又是主管,但uid1只是主持人。您可以随时访问角色,并在需要时知道谁是谁。请尝试阅读this有关数据库的最佳做法。简而言之,尽量不要让你的数据库深入。 另外,如果您是新手,我建议您查看Firestore。因此,在进入一个数据库之前,请选择要使用的数据库,以避免以后需要迁移。
答案 1 :(得分:0)
UID是唯一ID,您不能拥有两个具有相同UID的用户。 是的,您可以通过管理firebase数据库来识别用户。 例如:
"UserName 1" :
"email" : "emailId",
"userType" : "customer"
"UserName 2" :
"email" : "emailId",
"userType" : "vendor"
使用上述模式。希望这有帮助
答案 2 :(得分:0)
考虑在用户身上使用custom user claims来定义他们是主管还是主持人。
您可以通过Admin SDK设置自定义声明:
admin.auth().setCustomUserClaims(uid, {role: 'moderator'}).then(() => {
// The new custom claims will propagate to the user's ID token the
// next time a new one is issued.
});
然后,您可以通过安全规则强制执行访问,而无需进行任何查找:
{
"rules": {
"data": {
"$user_id": {
".read": "$user_id === auth.uid",
// Write access only for moderator.
".write": "auth.token.role === 'moderator'"
}
}
}
}