Android 云Firestore安全规则开发模式
我们正在开发基于云Firestore的Android应用程序 现在,我们已经将该应用程序发布到生产环境中,并继续添加更多功能,这些更改迫使我们添加/更改Firestore安全规则 问题是,在向所有用户发布新的安全规则之前,如何使用新的安全规则测试应用程序 我在文档中看到Firestore有一些模拟器,但我不知道他是否能提供帮助,或者它只用于单元测试,还有一个模拟器可以在草稿模式下测试单个请求,但最终我们需要手动测试应用程序的功能 换句话说,在将应用程序应用于所有用户之前,是否有办法更改安全规则并测试应用程序 此外,我还向在生产中使用Firebase的人提出一些问题:Android 云Firestore安全规则开发模式,android,firebase,firebase-security,Android,Firebase,Firebase Security,我们正在开发基于云Firestore的Android应用程序 现在,我们已经将该应用程序发布到生产环境中,并继续添加更多功能,这些更改迫使我们添加/更改Firestore安全规则 问题是,在向所有用户发布新的安全规则之前,如何使用新的安全规则测试应用程序 我在文档中看到Firestore有一些模拟器,但我不知道他是否能提供帮助,或者它只用于单元测试,还有一个模拟器可以在草稿模式下测试单个请求,但最终我们需要手动测试应用程序的功能 换句话说,在将应用程序应用于所有用户之前,是否有办法更改安全规则并
提前感谢。您可能需要查看Firebase模拟器(测试版)以测试安全规则: Firebase模拟器
https://github.com/FirebaseExtended/bolt/issues/80
Firebase仿真器使完全使用Firebase仿真器变得更容易
验证应用程序的行为并验证Firebase安全规则
配置。使用Firebase仿真器运行和自动化单元
在本地环境中进行测试
样本测试:
firebase.assertFails(app.firestore().collection("private").doc("super-secret-document").get());
assertFails(pr:Promise)=>Promise
此方法返回一个承诺,如果输入成功,该承诺将被拒绝
或者,如果输入被拒绝,则会成功。使用此命令可以断言
数据库读取或写入失败
更多信息:我使用了Bolt,一个可以转换为JSON安全规则的超集。与通过Firebase UI使用标准规则和模拟器相比,它看起来是一个更好的选择,尤其是当应用程序增长时,规则变得越来越大和复杂时,因为Bolt允许您创建函数来重用读/写/验证逻辑的通用代码 螺栓文档:
https://github.com/FirebaseExtended/bolt/blob/master/docs/guide.md
测试说明
https://github.com/FirebaseExtended/bolt/issues/80
另外,为了回答我们的问题,我们提供了一个详细的解释,以支持针对您的开发和生产环境的独立Firebase项目。不幸的是,我没有找到正式的解决方案,我使用prefix
dev-
将安全规则拆分为开发和生产,将数据库拆分为开发和生产,因此,调试模式与开发数据库和匹配的开发安全规则一起工作。
当然,在运行时需要向每个根集合添加前缀
通过这种方式,我可以在不影响生产的情况下发布对开发模式的新更改,我可以很好地将规则从开发复制到生产,并删除“dev”前缀
service cloud.firestore { match /databases/{database}/documents {
//production rules ********************************************************************
match /data/{user}/{doc=**} {
allow read, write: if request.auth.uid == user || hasPerrmision(request.auth.token.email);
//development rules ********************************************************************
match /dev-data/{user}/{doc=**} {
allow read, write: if request.auth.uid == user || hasPerrmision(request.auth.token.email);
}
}
}
你试过在控制台中使用模拟器吗?@tvicky4j247模拟器可以测试单个请求,我需要在发布之前手动测试应用程序的所有功能。我了解模拟器用于单元测试安全规则,如果有这种方法,我想用“起草的”安全规则手动测试应用程序