这样的Firebase安全规则?

时间:2020-01-24 11:03:53

标签: firebase google-cloud-firestore firebase-authentication firebase-security

我有一个收藏集,可以说它叫做房间。 在房间中,我有它的名称,其散列密码,“ members”,子集合,如下所示:

rooms: {
  room1Uid: {
    name: "room name",
    password: "hashed password",
    members: {
      member1Uid: { joindate: "timestamp"},
      member2Uid: { joindate: "timestamp"},
      ...
    },
    resource1: {
      something: "...",
    },
    resource2: {
      something: "...",
    }
  },

  room2Uid: {...}
}

我希望只有经过身份验证的用户才能在roomUid下读写成员列表中包含的所有内容。

因此,例如 request.auth.uid == member1Uid 可以从room1Uid下面读取 resource1

1 个答案:

答案 0 :(得分:2)

使用exists(),下面是示例代码

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {

    match /rooms/room1Uid/{document=**} {

      allow read, write: if exists(/databases/$(database)/documents/rooms/room1Uid/members/$(request.auth.uid))

    }
  }
}

尝试一下,让我知道,它是否有效