如何在firebase中阻止读取孩子的特定字段

时间:2019-08-31 10:58:23

标签: firebase firebase-realtime-database

我有一个具有用户名,UID,电子邮件的用户 所以我希望无法到达电子邮件字段和UID,因为某些用户不想通过阅读其电子邮件子级来向其发送电子邮件,并且在我的应用程序中注册以搜索用户不是必需的 如何解决这个问题?

我想制造一棵树,除了Firebase之外,其他任何人都不能读/写,但是Firebase中不存在

编辑

{
  "bdjsjd" : {
    "email" : "something1@gmail.com",
    "name" : "bdbsndnd",
    "username" : "bdjsjd"
  },
  "developer" : {
    "email" : "something2@gmail.com",
    "name" : "dev_mohammed",
    "username" : "developer"
  }
}

当我想通过键(键是用户的用户名)读取它时,它也会返回电子邮件,但是如果用户不想从其他人那里收到电子邮件,我想返回除电子邮件字段以外的所有内容但是我可以这样做吗?

1 个答案:

答案 0 :(得分:0)

Firebase将始终返回完整的节点。因此,您可以允许读取每个用户的emailname节点,而不是username的节点。但是,如果您允许读取用户节点(更高一级),则无法从结果中排除username

为确保这种结构的安全,您需要将用户名与其他详细信息放在不同的顶级节点中。像这样:

"profiles": {
  "bdjsjd" : {
    "email" : "something1@gmail.com",
    "name" : "bdbsndnd"
  },
  "developer" : {
    "email" : "something2@gmail.com",
    "name" : "dev_mohammed"
  }
},
"user_names": {
  "bdjsjd": "bdjsjd",
  "developer" : "developer"
}

现在您可以对/profiles/user_names赋予不同的权限。

另请参阅: