我有一个Firestore收藏。
文档的ID是机密。您应该只能读取其ID已知的文档。 为简单起见。我想坚持这种方法。
但是,默认情况下,例如,可以从Firestore中读取整个收藏集
await firestore.collection("secret_documents").get()
是否可以仅在其ID引用的情况下允许一次仅读取一个文档?
答案 0 :(得分:2)
是的,这实际上很容易。要控制可以访问哪些文档,请使用Firebase security rules for Firestore。
默认情况下,您的安全规则将为read
和write
,但实际上可以将其分解为更多的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