【问题标题】:Firestore Wildcard Variable Does Not WorkFirestore 通配符变量不起作用
【发布时间】:2020-07-17 15:40:44
【问题描述】:

我正在尝试使用从Its Docs 获得的代码测试 Firestore 安全规则。但它不起作用。即使通配符变量的自动完成功能也不起作用,奇怪的是,它与“{database}”变量一起工作。

请注意,在此屏幕截图中,变量 userid 返回的是“{userid}”,而不是“TBfnHh13tCNHmN9aBDhYPNTPsrw1”的用户 ID。

这里是完整的代码:

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

如果我用这个替换上面的代码,它可以工作。所以看来问题出在通配符变量上。

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {    
    match /users/{userId} {
      allow read, update, delete: if request.auth != null && request.auth.uid == "TBfnHh13tCNHmN9aBDhYPNTPsrw1";
      allow create: if request.auth != null;
    }
  }
}

任何帮助将不胜感激。谢谢!

【问题讨论】:

  • 我希望我能很好地理解这些内容以将其发布为答案,但是这里所描述的 resource.id 怎么样(“描述”?更像是提到的):firebase.google.com/docs/reference/rules/…
  • 您的屏幕截图未显示您的查询参数。您在左侧面板上向下滚动得太远了。请编辑问题以更清楚地说明您的查询是什么。如果您不依赖屏幕截图而是将您使用的值复制到问题中,实际上会更好。请注意,您在左侧面板中提供的值将与您在进行实际查询时在代码中使用的值相同。
  • @DougStevenson 谢谢!由于您提供的线索,我找到了解决方案。我已经发布了答案。

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


【解决方案1】:

感谢@Doug Stevenson,我找到了解决方案。

请注意,在下面的屏幕截图中,我在 Location 字段中写了 /users/{userId}这是错误的。我应该直接在字段中输入一个 id,例如/users/P41jhUbe2SUkgtNUensmypfs3ff1,这样就解决了问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-01
    • 2015-09-09
    • 2017-11-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多