gpt4 book ai didi

firebase-security - 如何使用安全规则过滤文档中的字段

转载 作者:行者123 更新时间:2023-12-02 03:43:32 25 4
gpt4 key购买 nike

我正在尝试 Cloud Firestore 安全规则。是否可以过滤文档字段?

例如,如果您有一个文档

{
name: "John Doe",
email: "<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="7612191336130e171b061a135815191b" rel="noreferrer noopener nofollow">[email protected]</a>"
}

那么某些用户将无法通过电子邮件地址获取文档。他们的应用程序请求文档带有

firebase.firestore.doc('users/doe-uid')

并获取此文档

{
name: "John Doe",
}

如果是,怎么做?

我认为这应该是可能的,因为 Cloud Firestore Security Rules Reference在第一句中说(强调是我的):

Cloud Firestore Security Rules are used to determine who has read and write access to collections and documents stored in Cloud Firestore, as well as how documents are structured and what fields and values they contain.

但是,我在引用资料中找不到任何内容告诉我如何过滤掉字段。

最佳答案

Firestore 规则不是过滤器,它们是文档查询的服务器端验证,这意味着您访问(或不访问)整个文档,而不是特定字段。

您提到的文档意味着您可以对字段进行数据验证。以下是验证写入查询数据的规则的基本示例(通过 request.resource.data):

match /users/{userId} {
allow write: if request.resource.data.age is int;
}

这是另一个基本示例,它使用现有字段来验证读取查询(通过resource.data):

match /articles/{articleId} {
allow read: if resource.data.isPublished == true;
}

要过滤掉字段,您必须在查询之后在客户端执行此操作。

现在,如果您想保护对某些字段的访问,则必须使用一组不同的规则创建另一个集合(查看 subcollections ),并进行另一个与这些规则匹配的查询。

关于firebase-security - 如何使用安全规则过滤文档中的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47571445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com