Google cloud firestore Firestore规则:匹配顶级集合

Google cloud firestore Firestore规则:匹配顶级集合,google-cloud-firestore,firebase-security,Google Cloud Firestore,Firebase Security,设置: 我的顶级收藏名为users 每个用户都以其唯一的ID命名,uid 我想制定一个规则,以便无论访问哪个文档或子集合,如果它将uid与用户中当前user的名称进行比较,则允许 当前尝试: 请注意,这适用于顶级文档,但只要我尝试使用该用户内的子集合,它就会失败 如果重要的话,将有7个命名的子集合在用户之间总是相同的 rules_version = '2'; service cloud.firestore { match /databases/{database}/documents

设置:

  • 我的顶级收藏名为
    users
  • 每个
    用户
    都以其唯一的ID命名,
    uid
  • 我想制定一个规则,以便无论访问哪个文档或子集合,如果它将
    uid
    与用户中当前
    user
    的名称进行比较,则允许
当前尝试:

  • 请注意,这适用于顶级
    文档
    ,但只要我尝试使用该用户内的子集合,它就会失败
  • 如果重要的话,将有7个命名的子集合在用户之间总是相同的

    rules_version = '2';
    service cloud.firestore {
      match /databases/{database}/documents {
        match /users/{user} {
          function isSignedIn() {
            return request.auth.uid != null;
          }
    
          allow read, write: if isSignedIn() && request.auth.uid == user
        }
      }
    }
    
任何帮助都将不胜感激。我想我需要在某处添加一些**?

您将希望使用a来匹配顶级集合下所有子集合中的所有文档

    match /users/{user}/{everything=**} {
      function isSignedIn() {
        return request.auth.uid != null;
      }
      allow read, write: if isSignedIn() && request.auth.uid == user
    }
在规则版本2中,递归通配符匹配0个或多个路径段