【问题标题】:Firestore gives me error: PERMISSION_DENIED: Missing or insufficient permissionsFirestore 给我错误:PERMISSION_DENIED:缺少或不足的权限
【发布时间】:2020-09-06 08:50:23
【问题描述】:

我正在尝试从我的 Firestore 数据库中获取数据。我做了以下事情:

Firestore.instance.collection('highScore').document('gGSIHVzDIjX1UCq7Pk8q').get().then((DocumentSnapshot ds) {
          print(ds);
        });

运行此行时出现以下错误:PERMISSION_DENIED: Missing or enough permissions。

我尝试将 Firestore 规则修改为:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, update, delete: if request.auth.uid == resource.data.uid;
      allow create: if request.auth.uid != null;
    }
  }
}

但我仍然遇到同样的错误。我做错了什么,我该如何解决?

【问题讨论】:

  • 为什么你认为这个规则应该允许对文档的读取权限?也就是说,登录用户的 UID 必须有一个名为“uid”的字段,其值相同。您是否验证过这种情况?你能拿出证据证明这些事情是真的吗?
  • @DougStevenson 感谢您的回复。我实际上是 firebase 的新手,所以我只是从 StackOverflow 中尝试了不同的东西。我希望任何人都有权读写和更新
  • @DougStevenson 感谢您的回复。我实际上是 firebase 的新手,所以我只是从 StackOverflow 中尝试了不同的东西。我希望任何人都有权读写和更新
  • 您能否解释一下您希望为 Cloud Firestore 安全规则申请哪些条件?

标签: firebase flutter google-cloud-firestore firebase-security


【解决方案1】:

如果您的目标(如 cmets 中所述)是允许任何人读写您的整个数据库:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write;
    }
  }
}

这是非常不安全的,如果您这样做,Firebase 会向您发送电子邮件,说明同样的内容。你应该尽快实施适当的规则,这样整个互联网就不能对你的数据做任何他们想做的事情。

【讨论】:

  • 我的应用程序没有登录信息。只会有一个名称,并且将使用 firebase 来跟踪数据。它仍然存在安全风险吗?
  • 好吧,您应该期望任何人都可以读写数据库。如果这对您来说是个问题,那么您可能需要寻找其他解决方案。
猜你喜欢
  • 2019-01-06
  • 2020-09-01
  • 2019-01-21
  • 2019-02-26
  • 2020-09-25
  • 2019-05-05
  • 2018-04-25
  • 2020-05-20
相关资源
最近更新 更多