我正在使用 firestore 构建一个 Web 应用程序,我希望用户创建一个 firestore 文档并将文档 ID 作为链接共享给某人 (example.com/id?1z32AWS5Wqt5DBlHnCm0
(,以便具有链接的人也可以查看和更新该firestore文档。
请注意,不涉及身份验证,任何人都可以创建文档并将链接发送给某人。如果需要,我还可以使用匿名登录(signInAnonymously()
(选项。
现在我需要编写数据库规则来:
-
防止用户搜索整个集合以查找集合中的所有其他文档,即使用
.get()
方法创建querysnapshot
,然后循环遍历以查找所有文档。 -
允许用户仅查看和更新他们拥有其集合 ID 的集合。
1 可以通过只允许get
访问而不允许list
来实现。read
既get
又list
,因此您必须清楚只允许使用get
方法。 阅读文档中的粒度权限。
2 实际上是不可能的。 只要知道集合的名称就足以让任何人尝试访问它。 您无法安全地"密码保护"集合。 您必须使用Firebase身份验证对用户提出一些限制,以控制访问权限。