接收无效的通配符安全规则的全局匹配表达式

时间:2019-07-12 07:36:22

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

我正在尝试实施此处概述的规则:https://stackoverflow.com/a/56047977/1604072

match /{path=**}/posts/{post} {
  allow read: if request.auth.uid != null;
}

这将产生以下错误:无效的全局匹配表达式。全球匹配 允许作为比赛声明路径中的最后一段。

这是现在编写此书的唯一/正确方法吗?:

match /{path=**}{
    match /collectionItems/{collectionItem} {
        allow read: if request.auth.uid != null;
    }
}

2 个答案:

答案 0 :(得分:1)

只需将 /{path=**}/ 替换为 /{prefix=**}/ 就可以了

最后应该是这样的:

match /{prefix=**}/posts/{post} {
  allow read: if request.auth.uid != null;
}

答案 1 :(得分:0)

对于未来的用户,刚刚发现this bit of documentation。不知道为什么我最初找不到它:

  

基于收集组保护和查询文档

     

在安全规则中,您必须明确允许收集组   通过为收集组编写规则进行查询:

     
      
  1. 确保rules_version = '2';是规则集的第一行。收集组查询要求使用安全规则版本2的new recursive wildcard {name=**}行为。
  2.   
  3. 使用match /{path=**}/[COLLECTION_ID]/{doc}为您的收藏组编写一条规则。
  4.