【问题标题】:Firestore security rules - wildcarding Collection Names?Firestore 安全规则 - 通配符集合名称?
【发布时间】:2018-12-18 09:11:17
【问题描述】:

我有一组名称都以 ABC 开头的集合,我想编写一个适用于所有集合的规则,无论 ABC 后面是什么。比如:

match /ABC*/{anyid} {
  allow read, write;
}

这可能吗?在规则控制台中,没有突出显示语法错误,但模拟器不允许我访问该表:

GET /ABC123/456

有什么想法吗?

【问题讨论】:

    标签: google-cloud-firestore firebase-security


    【解决方案1】:

    据我所知,目前无法匹配部分集合(或文档)名称。这听起来像是一个有趣的功能请求,所以我推荐filing a feature request

    与此同时,我唯一能想到的就是匹配所有集合,然后通过resource['__name__']测试路径:

    match /53829635/{document} {
      match /{col}/{doc} {
        allow read: if resource['__name__'][5].matches('ABC.*')
      }
    }
    

    resource['__name__'] 表达式返回一个Path,它可以作为数组的索引来获取路径段。它有一个/databases/(default)/documents/collection/document 的形式,因此子集合在索引5 处。由于这只是一个字符串,我们可以在其上使用matches。在这种情况下,我允许从名称以 ABC 开头的任何子集合中读取。


    更新:事实证明,您也可以简单地访问col 通配符,而不是从路径中查找。所以这也是一样的:

    allow read: if col.matches('ABC.*')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-01-10
      • 2019-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-19
      • 2019-07-05
      相关资源
      最近更新 更多