【问题标题】:Firestore security tester - Get function not foundFirestore 安全测试仪 - 未找到获取功能
【发布时间】:2020-05-17 22:34:03
【问题描述】:

我几天来一直在努力让我的 Firestore 安全规则与基本规则一起使用——即使是从文档中复制和粘贴的规则。我试图启动开发和测试模拟器,但由于似乎是 npm 冲突而失败。

我尝试使用规则游乐场,但它给了我“获取”功能无法识别的错误。我发现this problem has occurred in the past。我真的可以使用一些帮助来弄清楚从哪里开始。我正在考虑将firestore系统全部放弃,伴随着这些问题,系统经常无法连接。

完整的get语句是...

get(/databases/$(database)/documents/users/$(request.auth.uid)).data.designer ==true

我已经尝试了很多这样的变体,但都没有成功。

如果这是测试人员的问题,我如何测试我的查询并找出问题所在。如果这是一个更大的问题,我该怎么办?

更新:如果我按照下面的查询查询用户集合,读取将起作用。

allow read : if get(/databases/$(database)/documents/users/$(request.auth.uid)).data.designer == true

问题似乎在于我需要在不知道相关文档的特定 ID 的情况下检索文档 - 根据安全规则获取多个文档。

【问题讨论】:

  • 看起来您传递给get 调用的参数无效。您能否编辑您的问题以将规则包含为文本,以便我们可以完整地看到它们?
  • 我发布了完整的 get 命令。

标签: google-cloud-firestore firebase-security


【解决方案1】:

您在没有登录用户的情况下进行测试,这意味着您对 get() 的调用中的 $(request.auth.uid) 表达式失败。要完成这项工作,您需要一个登录用户。

【讨论】:

  • 我已经尝试过了,并且 get 也失败了。使用 resource.data.designerId 也会失败
  • 没有用户登录的事实绝对是您的屏幕截图错误的原因。我复制了它,然后通过在规则游乐场中启用身份验证来修复它。如果您在修复此问题后还有其他问题,请在您的问题中显示更新状态。
  • 那么,为什么像“if resource.data.designerId == request.auth.uid”这样的东西总是为资源返回空值?
猜你喜欢
  • 2020-04-29
  • 2020-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-12
相关资源
最近更新 更多