可以将调试日志记录添加到 Firestore 规则功能吗?

Gen*_* Bo 10 firebase firebase-security google-cloud-firestore

鉴于 firestore 规则结构允许使用函数,是否有某种方法可以将调试日志添加到这些规则函数中?.. 为了验证您期望的函数实际上正在被调用。

我看到在模拟器中,它在规则结构的行中显示一个红色的 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();
    }

  }
}
Run Code Online (Sandbox Code Playgroud)

Dou*_*son 12

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

具体来说,您可能希望使用 Firebase CLI来研究本地规则模拟,这是CLI 的一个全新功能。您可以使用带有debug()函数的模拟器进行简单的日志记录。


Ste*_*fan 5

Firestore 规则现在有一个 debug() 函数

它仍然不辉煌,但比以前更好。

  • 这在生产中不起作用,仅在 Firebase 模拟器上起作用。根据链接文档:“调试功能块仅由 Firestore 模拟器中的安全规则引擎执行,Firestore 模拟器是 Firebase 模拟器套件的一部分。调试功能在生产中没有任何影响。” (2认同)