【发布时间】:2019-08-22 19:15:01
【问题描述】:
在 Firestore 中,我有一个存储多个对象的集合,这些对象由多个用户共享。 示例:
{
users: [uid1, uid2, uid3],
content: 'sample'
}
这三个用户都应该能够看到该文档。为此,我创建了以下规则:
service cloud.firestore {
match /databases/{database}/documents {
match /sharedDocs/{doc} {
allow read: if isMember(doc);
allow update: if isMember(doc);
}
function isMember(doc) {
return doc.indexOf(request.auth.uid) != -1;
}
}
}
我通过 Angular(AngularFirestore 模块)发送查询:
return this.db.collection('sharedDocs,
ref => ref.where('users', 'array-contains', uid)
).valueChanges();
很遗憾,我在此查询中收到以下错误:
ERROR FirebaseError: 权限缺失或不足。
【问题讨论】:
-
规则只会在您对它们运行代码后拒绝操作。您能否编辑您的问题以包含获得该错误消息所需运行的最少代码?
-
好的。我添加了查询。
-
嗯...我不知道这在安全规则中是否可行。但我希望@DougStevenson 能出现并确认。
-
好的。我是这么想的。您对同一用例的不同安全策略有什么想法吗?
-
@FrankvanPuffelen 如果不可能的话。也许我只允许从前端主机名读取。这可能吗?
标签: firebase firebase-realtime-database firebase-security