不同的Firestore集合的不同安全规则

时间:2019-02-24 20:29:00

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

我目前是第一次使用Firestore,并试图稍微了解一下安全规则。我现在的问题真的很简单,我可以通过做更多的研究找出答案,但是我想确保自己做对了,所以我认为最好在这里提问。

如果我在Firestore中有两个集合,一个集合称为“ A”,另一个集合称为“ B”,如果我希望仅通过身份验证的用户在A和每个人中读取,写入,更新,删除...,我的安全规则将是什么?可以在B中读取内容,但只有经过身份验证的用户才能在B中进行写入,更新,删除...

编辑: 以下是当前规则,它们将B的规则应用于所有集合:

service cloud.firestore {
   match /databases/{database}/documents {
      match /{document=**} {
        allow read: if true;
        allow write: if request.auth.uid != null;
      }
   }

}

1 个答案:

答案 0 :(得分:1)

如果您查看documentation on authentication in security rules,则会发现以下规则:

service cloud.firestore {
  match /databases/{database}/documents {
    // Allow the user to access documents in the "cities" collection
    // only if they are authenticated.
    match /cities/{city} {
      allow read, write: if request.auth.uid != null;
    }
  }
}

针对您的用例进行了修改,类似于:

service cloud.firestore {
  match /databases/{database}/documents {
    match /A/{id} {
      allow read, write: if request.auth.uid != null;
    }
    match /B/{id} {
      allow read;
      allow write: if request.auth.uid != null;
    }
  }
}