【问题标题】:Firebase - Cloud Firestore permissionsFirebase - Cloud Firestore 权限
【发布时间】:2018-03-28 13:34:25
【问题描述】:

我有 2 个集合:一个用于用户,另一个用于用户上传的一些图像。每张图片都有其所有者的参考。

我可以看到所有的图像,但是当我退出时,我得到了

权限缺失或不足

为避免这种情况,我必须更改我的 ddbb 的权限:

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      // Allow requests from authenticated users
            allow read, write: if request.auth != null;
    }
  }
}

但这不正确吗? (也许我也需要更改我的代码)

【问题讨论】:

  • 您希望图像公开可见吗?如果不是,那么您退出后权限不足是正确的。您还应该添加权限以防止用户写入 /users 集合,除非它使用自己的 uid
  • 不,图像必须对所有人可见。是的,我还需要补充一点(你知道如何指向 document.ownerId 吗?)

标签: angular firebase ionic-framework google-cloud-firestore


【解决方案1】:

此代码应该允许任何人查看图像,只有经过身份验证的用户才能写入图像,并且只有经过身份验证的用户才能在/users 集合中看到自己的数据

service cloud.firestore {
  match /databases/{database}/documents {
    match /images/{imageId} {
      // Allow reads from public
      // Allow writes from authenticated users
      allow read;
      allow write: if request.auth != null
                   && resource.data.ownerId == request.auth.uid;
    }
    match /users/{userId} {
      // Allow access from authenticated user
      allow read, write: if request.auth.uid == userId;
    }
  }
}

【讨论】:

  • 也可以保证ownerId字段只包含当前的request.auth.uid。但是,我建议在此处存储DocumentReference,而不仅仅是uid。我已经搜索了文档,但我无法弄清楚如何做到这一点。我会检查并更新我的帖子。同时,我可以更新答案以在ownerId 字段中显示uid 权限
  • 哇,太好了,谢谢!我将阅读有关 DocumentReference 来使用它而不是 id。干杯!
  • 当我推送内容(记录)或尝试获取内容时,我遇到了同样的权限问题
  • 你能用你用来添加内容的代码和你返回的错误来更新你的问题吗?完成后请给我留言,以便我看看。
  • 您是否为食谱集合添加了规则?
猜你喜欢
  • 2021-06-13
  • 1970-01-01
  • 2018-04-25
  • 1970-01-01
  • 2020-10-17
  • 1970-01-01
  • 2019-01-21
  • 2019-02-24
相关资源
最近更新 更多