禁止阅读某些收藏

时间:2019-05-26 12:53:49

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

我有很多藏书可供阅读,但不允许写。我还有一个馆藏,其中禁止阅读,但允许写作。如何正确做到这一点? 我尝试了许多方法来正确地规定规则。官方文档无法解决我的问题。

它应该遵循以下原则:

match /{document=**} {
      allow read: if true;
      allow write: if false;
    }
match /FOLDER/FOLDER {
      allow read: if false;
      allow write: if true;
    }

但是它不起作用,因为重叠匹配语句。 “在多个允许表达式与一个请求匹配的情况下,如果任一条件为真,则允许访问”

也尝试过existsget

这些集合之间没有公共字段。

如何正确执行此操作?

1 个答案:

答案 0 :(得分:1)

由于此规则授予对整个数据库的无条件读访问权限:

match /{document=**} {
  allow read: if true;
  allow write: if false;
}

如果您不希望某些集合具有读取权限,则根本不能使用它。您应该删除该规则,并为要允许访问的每个集合编写新规则

您也可以尝试从全局规则中删除一个不可读的集合,但是我不建议您这样做,因为您不清楚要做什么:

match /{document=**} {
  allow read: if document[0] != "unreadable-collection";
  allow write: if false;
}