Firestore安全规则,允许用户查询单个文档

问题描述 投票:0回答:1

我有一个email集合,任何用户(公开)都可以通过他的电子邮件添加新文档。

docID: {
  email: '[email protected]'
}

所以现在我对email集合的安全规则是:

match /email/{documentID} {
  allow read: if request.auth.token.admin == true;
  allow create: if true;
}

因为我不希望用户能够阅读其他用户的电子邮件。

但是我希望客户端代码能够查询用户自己的电子邮件,以避免在数据库中重复。因此,我希望我的客户代码能够执行此操作:

const querySnapshot = await
props.firebase.firestore().collection('email').where('email', '==', email).get();

问题

我应该如何编写安全规则以实现该行为?

我不希望他们能够查询完整的email集合。

firebase google-cloud-firestore firebase-security-rules
1个回答
0
投票

我认为这是不可能的。考虑改为编写一个将电子邮件地址作为输入的Cloud Function,查询电子邮件集合,然后向客户端返回一个布尔值,指示是否存在。

请注意,这允许任何人有效地查询任何电子邮件地址,而不仅仅是“他们自己的”(但是您定义该所有权)。

© www.soinside.com 2019 - 2024. All rights reserved.