如果用户电子邮件存在于子集合中,则为 Firebase 规则



我正在尝试从军团集合中检索文档,其中docid是军团名称,但我想确保只有用户所在的军团是可检索的。

部落集合包含以部落名称作为 ID 的文档,以及成员的子集合,其中包含以用户电子邮件作为文档 ID 的文档。

氏族(收藏(=> 氏族名称(文档(=> 成员(收藏(=> 成员(文档(

如何检查军团以确保 request.auth.token.email 是成员子集合中的文档

我想我需要让成员等于 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});
}

成员子集合将包含多个文档,其中用户电子邮件作为 documentId。

您需要使用文档中描述的语法构建文档的正确路径(我建议仔细阅读(。 我建议使用用户的 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))

相关内容

  • 没有找到相关文章