我有两个收藏-租赁和用户。
租赁单据有一个名为“LandlorDid”的字段,类型为引用(而不是字符串)。
现在,在我的Firestore安全规则中,我希望只有当租用的landlordID字段与发出请求的用户的uid(即request.auth.uid
匹配时,才允许更新租用。
service cloud.firestore {
match /databases/{database}/documents {
match /tenancies/{tenancyID}{
allow update: if request.auth.uid != null &&
request.auth.uid == get(resource.data.landlordID).id
}
}
这应该很简单,但get()根本不起作用。Firebase文档,滚动到“Access other Documents”(访问其他文档)对我的情况没有任何帮助,我不确定如何使其工作。
如果引用不能这样使用,那将是一种耻辱,因为它们就像文档的任何其他字段一样。
我看到了一些问题。第一个问题是get()函数需要一个完全指定的ducument路径,类似于:
get(/databases/$(database)/documents/users/$(resource.data.landlordID)).data.id
第二个问题是,您试图在规则中使用引用类型,不幸的是,我认为这是不可能的。
Firestore中的引用类型不是很有帮助(还没有),我认为您应该将landlordID存储为字符串,然后您可以简单地执行以下操作:
service cloud.firestore {
match /databases/{database}/documents {
match /tenancies/{tenancyID}{
allow update: if request.auth.uid != resource.data.landlordID;
}
}
在Firestore中,我有一个拥有所有者的项目集合。 所有者可以是用户,应该允许用户读取其文档。 使用可以执行以下操作: 但是对于引用字段,在涉及安全规则时似乎没有任何文档。 我尝试了以下安全规则: 并如下所示进行查询: 但我仍然缺少或权限不足。
null 基本上数据结构如下所示: 问题是,我应该写什么安全规则来允许用户只在他们所属的组中(拥有组密钥)读取、创建和更新数据?同时,如何禁止用户找出其他群组的密钥?
获取错误: OnSnapshot中未捕获的错误:FirebaseError:权限缺失或不足。 下面是正在调用的函数: Firebase安全规则如下: 奇怪的是,它仍然正确地显示一切,只是触发了这个错误。为什么会这样?我忽略了吗?
最近我收到了一系列Firebase通知,涉及: [Firebase]您的Cloud FiRecovery数据库有不安全的规则 我们检测到您的安全规则存在以下问题:任何用户都可以写入您的整个数据库。因为您的项目没有强大的安全规则,任何人都可以访问您的整个数据库。攻击者可以窃取、修改或删除您的数据,并会抬高您的账单` Edit2:我需要的是允许每个人都写,而不需要登录,但是只有管理员帐户应该能够从Fi
问题是我不能使用具有这些规则的查询,因为(我发现)无法根据子集合是否包含某个文档进行查询。这意味着我不能列出某个用户所属的所有组。我尝试在作为一部分的映射中列出所有用户,但我无法设置谁可以编辑文档的某些部分的权限,因此这也不起作用。 编辑:据我所知,查询必须以某种方式与规则匹配,否则权限将被拒绝。如何创建一个查询来收集某个用户所在的所有组并满足此规则。
每个食谱文档包含三个内容。一个名为的字段,其中存储菜谱的名称;一个名为的字段,其中存储创建者uid的,以及一个名为的子集合,其中包含带有一些随机字段的文档。 问题是,使用这些规则只能创建菜谱文档。子集合及其文档不会创建,因为db表示 FirebaseError:[code=permission-denied]:缺少权限或权限不足。FirebaseError:缺少权限或权限不足。