如何通过多用户帐户保护Firebase数据库

时间:2018-05-10 01:24:28

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

所有示例都显示了使用单个用户保护Firebase数据库。在我的应用程序中,我有几个Firebase Auth用户被分组到一个帐户。该帐户上的所有用户都应该有权读取/写入以帐户ID分组的节点。

以下是结构的样本:

- users
  - [user id1]
  - [user id2]
  - [user id3]
- accounts
  - [account id1]
     - [user id1]
     - [user id2]
  - [account id2]
     - [user id3]
- things
  - [account id1]
     - thing 1
     - thing 2
  - [account id2]
     - thing 3
     - thing 4

我希望只有作为帐户一部分的用户能够读/写"事情"在他们自己的帐户节点内。所以[用户id1]和[用户id2]应该只能读/写"东西"在[account id1]节点内。这是否可以使用Firebase数据库规则?

1 个答案:

答案 0 :(得分:1)

弗兰克对我的问题的评论使我朝着正确的方向前进并带领我到这个线索,在那里我找到了我需要的答案:

https://stackoverflow.com/a/19524810/265333

我最后还将[帐户ID]与用户存储在一起:

- users
  - [user id1]
     - [account id1]
  - [user id2]
     - [account id1]
  - [user id3]
     - [account id2]

一旦我这样做,我就可以写出这样的数据库规则:

"things":{
          "$acctid":{
            ".read": "auth != null && root.child('users').child(auth.uid).child('AccountId').val() == $acctid",
            ".write": "auth != null && root.child('users').child(auth.uid).child('AccountId').val() == $acctid"
          }
        }