我正在尝试从氏族集合中检索文档,其中docid是氏族名称,但我想确保仅可检索用户所在氏族。
clans集合包含以clanname作为ID的文档,以及成员的子集合,该成员的子集合包含以用户电子邮件作为doc ID的文档。
氏族(集合)=>氏族(文档)=>成员(集合)=>成员(文档)
如何检查氏族以确保request.auth.token.email是members子集合中的文档
我认为我需要让成员具有相同的request.auth.token.email,但不确定在规则中适合该位置的地方。
firebase
.firestore()
.collection("clans")
.doc(clanName)
.get()
.then(clan => {
this.clan = clan;
});
match /clans/{clanName} {
allow create;
allow read: if exists(/databases/clans/documents/{clanName}/members/{member});
}
成员子集合将包含多个文档,其中用户电子邮件为documentIds。
您需要使用中所描述的语法来构建的文档正确的路径文件(这一点我建议您阅读彻底)。我建议使用用户的UID,因为这是唯一标识帐户的最佳方法:
allow read: if exists(/databases/$(database)/documents/clans/{clanName}/members/$(request.auth.uid))
如果您必须使用电子邮件,强烈建议您避免使用此类安全规则,因为稍后您可能会遇到问题:
allow read: if exists(/databases/$(database)/documents/clans/{clanName}/members/$(request.auth.token.email))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句