当前位置: 首页 > 知识库问答 >
问题:

带有云firestore的firebase规则

岑彬炳
2023-03-14

设置FireBase的乘积规则。

具有3个数据库集合的示例。

云火库

在firebase收集的国家,所有用户都应该被允许读写。

在firebase收集汽车,只有管理员允许写。

在飞机的firebase集合上,允许所有经过身份验证的用户进行写入。

不工作文档:https://firebase.google.com/docs/rules/basics@cloud-firestore

如何设置语法正确的规则?

    // All public to include countries
    service cloud.firestore {
       match /databases/{database}/documents {
         match /{document=**} {
           allow read: if true ; 
           allow write: if true ;
         }
       }

     // check cars collection
     match /databases/{database}/documents/Cars {
        // For attribute-based access control, Check a boolean `admin` attribute
        allow read: if true ;
        allow write: if get(/databases/$(database)/documents/users/$(request.auth.uid)).data.admin == true;

    }

     // check airplanes collection
      match /databases/{database}/documents/Airplanes {
        // Allow only authenticated content owners access
        match /{database}/{userId}/{documents=**} {
          allow read: if true ; 
          allow write: if request.auth.uid == userID
        }
      }
    }

共有1个答案

司马狐若
2023-03-14

你的规则有几个错误。

match /{document=**} {
    allow read: if true ; 
    allow write: if true ;
}

Firestore区分大小写。为了避免错误,使用一致的命名传达,如camelCase或pascal_case。

必须在match语句的末尾添加一个文档match变量

这应该会起作用:

service cloud.firestore {
    match /databases/{database}/documents {

        match /users/{userId} {
            allow read: if true;
            allow write: if request.auth != null && request.auth.uid == userId;
        }

        match /cars/{carId} {
            allow read: if true ;
            allow write: if get(/databases/$(database)/documents/users/$(request.auth.uid)).data.admin == true;
        }

        match /airplanes/{airplane} {
            allow read: if true ; 
            allow write: if request.auth != null ;
        }
    }
}
 类似资料:
  • 最近我收到了一系列Firebase通知,涉及: [Firebase]您的Cloud FiRecovery数据库有不安全的规则 我们检测到您的安全规则存在以下问题:任何用户都可以写入您的整个数据库。因为您的项目没有强大的安全规则,任何人都可以访问您的整个数据库。攻击者可以窃取、修改或删除您的数据,并会抬高您的账单` Edit2:我需要的是允许每个人都写,而不需要登录,但是只有管理员帐户应该能够从Fi

  • 我使用下面的firebase rest API访问firestore数据库数据 为了访问我的firestore数据库,我在关键部分使用了我的访问令牌,但我收到了来自firebase的电子邮件,称“[firebase]您的云firestore数据库有不安全的规则”。直到那时,我才发现任何人都可以访问我的数据库数据,即使没有有效的访问令牌 谢谢

  • 我正在从Firebase实时数据库切换到云Firestore。我的数据库包含拥有存储的用户,每个存储都包含盒子。每个用户都可以拥有多个包含盒子的存储器。每个存储可以包含几个盒子。每个箱子只能放在一个仓库里。 在我应用程序的主视图中,对于该特定用户,我需要列出所有存储以及每个存储中的框,如下所示: 然后,用户应该能够点击每个框以查看内容和更多信息。 在Firebase实时数据库中,每个用户只需一个请

  • 我按顺序调用这些函数(javascript'Firebase'): 我在firestore中设置了安全规则,只有当文档中的电子邮件字段等于auth email:时,才允许读取“users/:docid” 问题是在上会出现权限缺失或不足的错误。当然,数据库中的电子邮件是正确的,所以唯一的问题可能是无效。是否登录(使用任何登录函数),即使解析,也不能保证auth令牌被更新并可以立即使用?

  • 我正在开发一款iOS应用程序,它有(哇,惊喜!)聊天功能。整个应用程序大量使用Firebase工具,对于数据库,我正在使用新的云Firestore解决方案。 目前我正在使用数据库规则加强安全性,但我对自己的数据模型有点挣扎:)这可能意味着我的数据模型选择不当,但我真的很满意,除了实现规则部分。 模型的对话部分如下所示。在我的数据库的根目录下,我有一个集合: 然后我对每个对话都有一个子集合,称为消息

  • null 基本上数据结构如下所示: 问题是,我应该写什么安全规则来允许用户只在他们所属的组中(拥有组密钥)读取、创建和更新数据?同时,如何禁止用户找出其他群组的密钥?

  • 我知道这只是我在这一点上缺乏理解,但我不知道还能去哪里,我觉得我现在需要一个ELI5。现在我没有得到任何错误,但我也不确定要朝哪个方向去完成我的下一个问题/任务。 这是我第一次用Firebase开发Nativescript应用程序。我能看懂这篇有用的文章(https://hub.packtpub.com/firebase-nativescript-cross-platform-app-develo