【问题标题】:is there a way to find in what line that the access is denied in firestore security rules?有没有办法在 Firestore 安全规则中找到拒绝访问的行?
【发布时间】:2020-01-30 04:16:52
【问题描述】:
只有当我未能通过安全规则时,我才会在我的 iOS 应用上收到此消息
PERMISSION_DENIED:权限缺失或不足。
我在 firebase 控制台 firestore 规则中编写了 320 行代码。每当我收到该错误消息时,就很难跟踪我未能通过哪些规则。有没有办法找出在 Firestore 安全规则中访问被拒绝的那一行?我在文档中找不到它
【问题讨论】:
标签:
firebase
google-cloud-firestore
firebase-security
【解决方案1】:
无法获取有关客户端代码中哪些规则失败的更多信息。这实际上是设计使然,因为它会给潜在的攻击者提供大量额外信息。
查看哪条线路失败的最快方法是在 Firebase 控制台的规则模拟器中重现该场景,这将准确显示哪条线路出现故障。
【解决方案2】:
为了补充 Frank 所说的内容,您可以使用在本地计算机上运行的 security rules emulator 以及实现测试套件的代码来获取有关安全规则执行的更多详细信息。这是调试安全规则的最佳方式,因为您将获得描述哪个规则拒绝访问的综合输出。
我强烈建议在部署规则之前使用此工具在本地进行测试,这样可以减少您犯错误而影响产品的机会。