使用规则禁用Firebase Cloud Firestore中的查询集合

dsh*_*tjr 10 javascript firebase google-cloud-firestore firebase-security-rules

我正在使用Firebase Cloud Firestore,我想修改我的规则以限制用户查询集合.

这不应该被允许:

firestore().collection("users").get()
Run Code Online (Sandbox Code Playgroud)

但是应该允许这样做:

firestore().collection("users").doc("someUserId").get()
Run Code Online (Sandbox Code Playgroud)

目前,我的规则如下:

match /users/{userId} {
    allow read;
}
Run Code Online (Sandbox Code Playgroud)

但是此规则允许查询"用户"集合.

如何允许单个文档获取,但不允许收集查询?

Jua*_*ara 14

您可以将读取规则分解为getlist.获取规则适用于单个文档的请求,列表规则适用于查询和集合请求(docs).

match /users/{userId} {

  //signed in users can get individual documents
  allow get: if request.auth.uid != null;

  //no one can query the collection
  allow list: if false;
}
Run Code Online (Sandbox Code Playgroud)