Firestore数据库规则:查询的权限
我试图查询基于字段的文档。
由于这个领域,我有权限阅读这个文件:
match /lists/{list=**} { allow read: if resource.data.name == 'MyDocument' }
如果我试图直接检索这个文档,它是成功的(使用Kotlin的Android客户端):
val doc = db.document("lists/acaa0247-eccd-4ff0-b986-7f8b6187e45f") doc.get().addOnCompleteListener { task -> if (task.isSuccessful) { // here it works println("This Works") } else { println("Failed") } }
但是当我查询它(或只是试图获取集合中的所有文档),我得到一个权限被拒绝的异常:
val collection = db.collection("lists") collection.get().addOnCompleteListener(activity, { task -> if (task.isSuccessful) { println("Should work") } else { // Here is isn't working println("Failed") } })
当我允许每个人阅读/lists
下的所有文件时,这个查询是有效的。
match /lists/{list=**} { allow read: if request.auth != null }
所以我的问题是:用户是否需要阅读所有在查询中搜索的文档? 在我的情况下,这将意味着所有在/lists
所有字段的文件?
所以我的问题是:用户是否需要阅读所有在查询中搜索的文档?
是。
为了避免在查询列表时出现错误,在客户端上,您可以使用where子句只读取您有权读取的文档。
- Firebase Perf不会运行测试应用程序:transformClassesWithFirebasePerformancePluginForDebugAndroidTest
- 如何更改Kotlin属性的名称以匹配Firebase数据库上的字段
- Firebase Android – 在Kotlin中使用电子邮件和密码创建用户
- 转换字节码时出错 – DexException – Firebase身份验证
- OneSignal:onNotificationProcessing在一段时间后不会被调用
- 有没有办法将后端(Kotlin)服务器应用程序部署到Firebase?
- 如何在Kotlin上使用Firebase UI数据库?
- 如何在Firebase中存储BigDecimal?
- RxJava:如何返回null的正确类型