首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对firebase firestore中特定集合使用不同的规则

如何对firebase firestore中特定集合使用不同的规则
EN

Stack Overflow用户
提问于 2020-03-28 04:43:28
回答 1查看 548关注 0票数 0

我有一个火库数据库,对于我想要的所有收藏,下面的规则

代码语言:javascript
复制
    allow read : if request.auth.uid != null ;
    allow write: if request.auth.uid != null ;

除了service-account集合,我不想让任何人访问它(只访问firebase函数,因为它们是在管理服务帐户下运行的),所以我更新了我的规则

代码语言:javascript
复制
rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {

    match /{document=**} {
        allow read : if request.auth.uid != null ;
      allow write: if request.auth.uid != null ;
    }

    match /service-account/{serviceAccount} {
      allow read: if false;
      allow write:  if false;
    }

  }
}

然后我试着通过Rules Play Ground测试它,规则被考虑进去了,但是结果不正确

所以我的规则正确地禁止访问,但第一条规则将应用于所有人,似乎允许读取。我改变了顺序,没有差别。

我怎么才能解决这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-28 04:55:25

问题是,这个规则会无条件地应用于数据库中的每个文档:

代码语言:javascript
复制
    match /{document=**} {
      allow read : if request.auth.uid != null ;
      allow write: if request.auth.uid != null ;
    }

有了它,所有用户都可以读取和写入所有文档。您不能使用其他规则覆盖此规则。一旦文档被任何规则认为是可读的,就不能更改。

请参阅overlapping match statements的文档。

相反,您需要做的是按其名称调用每个单独的集合(service-account除外),并将权限分别应用于它们。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60893855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档