【问题标题】:Can debug logging be added to firestore rules functions?可以将调试日志记录添加到 Firestore 规则功能吗?
【发布时间】:2019-04-05 05:20:51
【问题描述】:

鉴于 firestore 规则结构允许函数,有没有办法将调试日志添加到那些 rule-functions ? ..为了验证您期望的函数实际上正在被调用。

我看到,在模拟器中,它在规则结构的行中显示了一个红色的 X,对于给定的模拟请求,访问被拒绝。但是,我很想在生产模式下进行验证,以便将其传达给关注规则完整性的各方。

在下面的示例中,我认为它可以通过注释掉的行来实现:

console.log('ENTER: isAccessOn()');

但是这不起作用。在这里询问是否在平台中有类似的选项..或者如果没有,是否有关于如何通过生产部署进行此类验证的建议。谢谢

service cloud.firestore {
  match /databases/{database}/documents {

    // block client access
    function isAccessOn() {
      // console.log('ENTER: isAccessOn()');
      return false;
    }

    match /{document=**} {
      allow read, write: if isAccessOn();
    }

  }
}

【问题讨论】:

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


    【解决方案1】:

    无法在生产中的安全规则中记录任何内容。如果您想验证您的规则是否按预期工作,您应该为它们编写一些集成测试并运行您的测试,以确保根据您的规范拒绝或允许访问。

    具体来说,您可能需要查看local rules emulation using the Firebase CLI,这是 CLI 的全新功能。您可以使用带有debug() 函数的模拟器进行简单的日志记录。

    【讨论】:

      【解决方案2】:

      Firestore 规则现在有一个 debug() function

      它仍然不出色,但比以前更好。

      【讨论】:

      • 这在生产中不起作用,仅在 Firebase 模拟器上起作用。根据链接的文档:“调试功能块仅由 Firestore 模拟器中的安全规则引擎执行,它是 Firebase 模拟器套件的一部分。调试功能在生产中无效。”
      • @DougStevenson,哎呀,有趣。在 OP 中,标题是通用的,但在 OP 正文中,我确实提到了 "production" 以获取调试输出。所以现在,不确定要接受哪个答案,因为这实际上对于提供日志很有用,即使只是在模拟器级别,我们也可以从运行时执行中返回。
      • 嗯,您通常会接受有用的那个,但要对所有至少有点帮助的都投赞成票。
      • 对于这种调试工作/验证来说,这对我们来说绝对比以前更可用,所以我将把 Accept 留在这个上。等待下一次迭代:)。谢谢道格
      • 我认为您不应该使用您的生产应用程序进行调试 ;-) 不管下一步,console.log 的方法?我们会被宠坏的。
      猜你喜欢
      • 1970-01-01
      • 2016-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多