如何在 Flutter 中使用 Firebase Auth 和 Firestore

Posted

技术标签:

【中文标题】如何在 Flutter 中使用 Firebase Auth 和 Firestore【英文标题】:How To use Firebase Auth with Firestore in flutter 【发布时间】:2020-12-24 23:26:02 【问题描述】:

我有一个基于 cloud_firestore 和 firebase_auth 的颤振应用程序,我通过 Authentication firebase 添加用户(蓝色按钮),并保留 ID 在代码中,这样这个用户就是 administrator,普通用户可以通过应用程序(电子邮件和密码)创建一个帐户,我想要的是确保 administrator strong> 是唯一可以从数据库中删除数据的用户,而其余用户只允许读写,所以我这样做了:

我将 Cloud Firestore 项目中的 roles 更改为:

rules_version = '2';
service cloud.firestore 
  match /databases/database/documents 
    match /document=** 
      allow read, write: if request.auth != null;
      allow delete : if request.auth.uid == 'psqxVzX6BvYCuWbajhcEK1QGZOo1';
    
  

这是真的还是假的,Firebase 如何对 uid 敏感?

也许我的问题是如何通过firestore 请求发送uid

提前致谢

【问题讨论】:

不需要将 id 作为请求的一部分发送到 Firestore。它由 Firestore 插件自动处理。您可以通过创建一个新帐户并尝试删除文档来检查这一点 我创建了一个新用户,可以删除文档,这是反对卷 那是因为你的规则是错误的。抱歉,我没有注意到您是如何编写规则的,但如果请求为空,您允许读写。默认情况下,写入意味着创建、更新和删除。您可以测试您的规则是否适用于他们的沙箱 感谢您的努力,谢谢,但是有(创建、更新),我是 Firebase 的新手 请将您的规则图片替换为文本形式的实际规则。一般来说:不要发布文字图片。 【参考方案1】:
    如果您有 write 规则,则该规则允许创建、更新和删除操作。 如果您对同一个操作有多个规则,它们会被 OR'ed 在一起。

这意味着您的allow read, write: if request.auth != null 允许任何经过身份验证的用户创建、更新和删除数据库中的任何文档。

如果您只想允许任何经过身份验证的用户创建或更新文档,但只希望具有该特定 UID 的用户删除文档,您必须明确命名这些操作:

allow read, create, update: if request.auth != null;
allow delete: if request.auth.uid == 'psqxVzX6BvYCuWbajhcEK1QGZOo1';

有关完整信息,请参阅granular operations 上的文档。

【讨论】:

谢谢,我尝试从用户帐户中删除文档但失败

以上是关于如何在 Flutter 中使用 Firebase Auth 和 Firestore的主要内容,如果未能解决你的问题,请参考以下文章

Flutter:如何在 [Firebase] 中使用 OR 条件获取流查询

如何使用 Flutter 在 Firebase 中正确登录和注册?

在 Flutter 中,如何使用 CachedNetworkImage 显示来自 Firebase 的离线图像?

如何使用firebase在flutter中添加推荐程序[关闭]

Flutter-如何在firebase查询中使用逻辑AND以及如何更新数据?

如何在 Flutter 中等待文件上传到 Firebase 存储?