如何在Flatter中使用Firebase Auth和Firestore

如何在Flatter中使用Firebase Auth和Firestore,firebase,flutter,dart,google-cloud-firestore,firebase-authentication,Firebase,Flutter,Dart,Google Cloud Firestore,Firebase Authentication,我有一个基于和的颤振应用程序,我通过身份验证firebase添加用户(蓝色按钮),并在代码中保留ID,以便该用户是管理员,普通用户可以通过应用程序(电子邮件和密码)创建帐户,我想要的是确保管理员是唯一可以从数据库中删除数据的人,而其他用户只允许读写,所以我这样做了: 我将云Firestore项目中的角色更改为: rules_version = '2'; service cloud.firestore { match /databases/{database}/documents {

我有一个基于和的颤振应用程序,我通过身份验证firebase添加用户(蓝色按钮),并在代码中保留ID,以便该用户是管理员,普通用户可以通过应用程序(电子邮件和密码)创建帐户,我想要的是确保管理员是唯一可以从数据库中删除数据的人,而其他用户只允许读写,所以我这样做了:

我将云Firestore项目中的角色更改为:

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

提前谢谢您

  • 如果您有
    write
    规则,则该规则允许创建、更新和删除操作
  • 如果对同一操作有多个规则,则它们将被合并在一起
  • 这意味着您的
    允许读、写:if request.auth!=null
    允许任何经过身份验证的用户创建、更新和删除数据库中的任何文档

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

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

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

    无需将id作为请求的一部分发送到Firestore。它由Firestore插件自动处理。您可以通过创建一个新帐户并尝试删除文档来检查这一点。我创建了一个新用户,可以删除文档,这与rollsThats相反,因为您的规则是错误的。抱歉,我没有注意到您是如何编写规则的,但是如果请求为空,您允许读写。默认情况下,“写入”表示创建、更新和删除。您可以测试您的规则在他们的sandboxI中是否有效我感谢您的努力,谢谢,但是有(创建、更新),我是Firebase的新手请将您的规则图片替换为实际规则文本。一般情况:不要发布文本图片。谢谢,我已尝试从用户帐户中删除文档,但失败