Firestore-禁止一次读取多个文档

时间:2020-01-06 19:47:13

标签: firebase google-cloud-firestore

  • 我有一个Firestore收藏。

  • 文档的ID是机密。您应该只能读取其ID已知的文档。 为简单起见。我想坚持这种方法。

  • 但是,默认情况下,例如,可以从Firestore中读取整个收藏集

await firestore.collection("secret_documents").get()

是否可以仅在其ID引用的情况下允许一次仅读取一个文档?

1 个答案:

答案 0 :(得分:2)

是的,这实际上很容易。要控制可以访问哪些文档,请使用Firebase security rules for Firestore

默认情况下,您的安全规则将为readwrite,但实际上可以将其分解为更多的granular operations of get, list, create and update。而且您要尝试的是允许get,但不允许list操作。从文档中:

service cloud.firestore {
  match /databases/{database}/documents {
    // A read rule can be divided into get and list rules
    match /cities/{city} {
      // Applies to single document read requests
      allow get: if <condition>;

     // Applies to queries and collection read requests
      allow list: if <condition>;
    }
    ...

因此,允许所有人使用get并禁止list通话:

allow get: if true;
allow list: if false;

您可能需要详细说明allow get规则,因为限制它更为常见,例如,仅限使用Firebase身份验证登录到您的项目的用户:

allow get: if request.auth.uid != null;

https://firebase.google.com/docs/firestore/security/rules-query