【问题标题】:Firebase Rule never returning a request.responseFirebase 规则从不返回 request.response
【发布时间】:2020-06-15 06:54:03
【问题描述】:

当我使用 request.response 在应用程序或模拟器中使用安全规则运行 Firebase/Firestore 查询时,检查始终失败。模拟器抛出“错误:simulator.rules 行 [XX],列 [XX]。属性资源未在对象上定义。

这意味着我正在查询的文档不是真实的。它存在于我的数据库中,以防模拟器不检查真实文档,我确保在运行 get 之前立即对文档进行 sim“创建”调用。在此集合或任何其他集合中似乎没有找到我插入的实际文档 ID。明显忽略了一些重要的,可能是荒谬的基本:

rules_version = '2';

service cloud.firestore {
  match /databases/{database}/documents {
    match /responses/{id} {
        allow read: 
             if request.auth.uid == request.resource.data.userID;        
  }
}

仅供参考,查询已通过身份验证,我正在点击路径“responses/documentName”,该路径实际上存在“userID”属性。不使用 request.response 的规则运行良好。

这显然是一个超级样板规则/查询。我忽略了什么?

非常感谢:)

【问题讨论】:

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


    【解决方案1】:

    正如错误消息所说,request.resource 不存在。它只存在于写入中

    试试这个:

    if request.auth.uid == resource.data.userID;        
    

    【讨论】:

      猜你喜欢
      • 2019-12-26
      • 2019-01-15
      • 2019-06-03
      • 1970-01-01
      • 1970-01-01
      • 2018-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多