仅当 ID 已知时才允许读取文档

Only allow document to be read if ID is known

我有一个名为 proposals 的集合,我想禁用它的列表并仅在用户知道 ID 时才允许获取。

Firebase 可以吗?

我目前失败了,因为允许“阅读”,但没有这个我无法阅读文档。

match /proposals/{uid} {
  allow list, update, delete: if false;

  allow create, read: if true;
}

进行这种授权很常见,是的,这是可能的。 Firestore 安全规则向我们提供 request.auth.uid,其中包含发出请求的用户的 UID,如果未经身份验证则为 null。

因此,您可以将该信息与相等运算符一起使用:

match /proposals/{uid} {
  allow list, update, delete: if false;

  // Allow getting Documents if the Document ID is equal to the currently uid of the authenticated user who is making the request.
  allow get: if request.auth.uid != null && request.auth.uid == uid;
  allow create;
}

您应该使用 get 来定义当任何用户试图获取文档 时将应用的规则。请注意 read 适用于 任何类型的读取请求 ,其中包括 getlist.

有关安全规则和身份验证的更多信息:https://firebase.google.com/docs/rules/rules-and-auth