Firebase有没有办法将多个用户添加到一个UID中

时间:2018-01-31 03:37:23

标签: android firebase firebase-realtime-database firebase-authentication

我是Android新手,想要将两种不同类型的用户添加到一个项目UID中:一个是主管,另一个是主持人。

但是我无法弄清楚如何做到这一点是有办法的。我该怎么办?

这是我的Firebase数据库:

This is my Firebase Database

3 个答案:

答案 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'"
      }
    }
  }
}