如何在 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中添加推荐程序[关闭]