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

Firestore使用auth名称为特定用户编写安全规则

万俟铭
2023-03-14
email: "userMailId@mail.com"
uId: "firestore_user_Id"
new Message(uId, title, messageBody, timestamp)

目前,我正在尝试将request.auth.uid存储在集合中的admins的id进行匹配:

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read;
      allow write: if request.auth.uid == resource.data.uId;
    }
  }
}

这是写的还是我做错了什么。任何帮助都很感激。

共有1个答案

苗烈
2023-03-14

由于管理员的名称在此规则中不可用Allow write:if request.auth.uid==resource.data.uid;,因此无法查找文档来检查他们是管理员。

您需要一个集合,其中为每个管理员保留一个文档,将他们的UID作为文档键/名称。一旦有了它,就可以使用以下命令检查规则中是否存在这样的文档:

allow write: if exists(/databases/$(database)/documents/admins/$(request.auth.uid));

另请参阅有关访问其他文档的文档。

 类似资料:
  • 将true更改为request.auth.uid!=null后,它会出现错误: 我可以弄清楚获取用户数据,比如:电子邮件和密码或用户id令牌,如何使用用户数据解决上述错误?

  • 我想检查用户的用户名和电话号码是否唯一。我已经用FirebaseFirestore实现了它。getInstance()。集合(“用户”)。whereEqualTo(“电话”,ph)。get()。addOnCompleteListener(…) 这是我的firestore规则: 代码运行良好,没有问题。我在使用方法和请求之前检查这个。啊。uid将始终为空。要使代码工作,我必须保持

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

  • 我是firestore数据库的新手,我已经在android studio中开发了一个应用程序来访问firestore数据库中的数据。我的应用程序有两种类型的用户类别1。管理2。用户我已经使用短信服务提供商的API实现了移动号码认证逻辑。我没有使用谷歌的firebase认证。我不能理解如何编写firestore数据库的规则。 admin-->可以读写所有集合 用户-->可以读取所有集合,但只能写入少

  • 我有一个angular web应用程序,我没有使用Firebase身份验证来登录我的用户,因为它是通过服务完成的。 现在,我的firestore帐户有完全的访问权限,任何人都可以执行任何操作。 我阅读了安全规则的文档,到处都提到了firebase Auth。有没有一种方法来定义规则,而不使用firebase Auth?