Firebase(Firestore)安全规则,限制特定用户对对象的访问

时间:2020-03-25 20:54:13

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

我需要将对存储在Firestore中的Meeting对象的访问权限限制为特定的用户ID(会议参与者)。

会议示例:

{
    name: "Topic 1";
    participantsIds : [
        "0YClg4mgljK8m16znDrW",
        "xFRCam5joc3nDW5jHWT5"
    ];
}

要从Firestore为特定参与者加载会议,我可以轻松地在带有“ array-contains”运算符的where查询中使用。

如何编写Firestore安全规则以防止未与会议参与者(不在partsIds数组中)的用户阅读?

是否有更好的方法来存储与会人员并轻松查询和编写安全规则?

1 个答案:

答案 0 :(得分:1)

Firestore列表类型字段在安全规则中显示为List个对象。您可以使用in运算符检查列表中是否存在元素。假设您使用Firebase Auth来识别用户,这将仅允许participantsId字段中列出的用户读取文档:

match /your-meetings-collection/{id} {
  allow read: if request.auth.uid in resource.data.participantsId
}