如何构建Firebase数据和规则以在用户之间共享数据?

def*_*ech 5 firebase firebase-security

目前我有一个简单的待办事项应用程序,用户可以创建一个列表,然后勾选项目.数据结构如下:'/ acc_'+ USER_ID +'/ done'和'/ acc_'+ USER_ID +'/ todo'.当项目"完成"时,它们将被移动到完成列表.

我想要的是让用户能够与另一个经过身份验证的用户共享列表.

目前的规则似乎如下,似乎有效.

{
  "rules": {
        "$userPath": {
            ".read": "auth != null",
            ".write": "auth != null",
            ".validate": "$userPath === 'acc_' + auth.id"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我认为我需要做的是让每个用户拥有一系列经批准的电子邮件地址,并以某种方式将其挂钩到安全规则中.

或者,我可以在根目录中创建一个列表,只有创建者和共享用户才能访问它.

任何指导?

Ana*_*ant 1

由于用户决定他们想与谁共享列表,因此我会将该信息存储在用户数据本身中。例如:

{
  "rules": {
    "$userPath": {
      ".write": "$userPath == 'acc_' + auth.id",
      ".read": "$userPath == 'acc_' + auth.id || root.child($userPath).child('shared').hasChild(auth.id)"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

然后将共享数据的用户列表存储在acc_userid/shared/