firebase - Firebase 规则设置
问题描述
我们有一个firebase结构作为附加图像。
我目前的规则是
"Games":{
".read":"query.orderByChild == 'email' ",
"$gid":{
".read":true,
".write":true
},
".write":false,
}
这有助于禁用对父级的访问,但是当传递了空白电子邮件 ID 时,它正在获取整个数据库,因此是否可以使用规则检查电子邮件的长度?
解决方案
我很难盲目地验证这个答案(所以请谨慎对待),但我希望这会给你一个方向性的帮助。
因此,在您的情况下,“下载”意味着读取 db.ref('/Games') 的能力应该不可用,但是用户(或某些用户组?)应该能够读取 db.ref('Games/$游戏ID')。
根据这篇文章:https ://firebase.google.com/docs/database/security/securing-data#rules_are_not_filters
您无法通过限制“.read”的安全规则实现这一点:在“/Games”级别为false,因为这将阻止读取任何gameId,因为安全规则将级联。
您可以做的是尝试使用查询作为文章中所述的“过滤”方式:
"Games":{
".read":"query.orderByChild == 'email' ",
"$gid":{
".read": "query.orderBy("email") && query.equalTo === $gid",
".write":true
},
".write":false,
}
所以你的数据库查询应该是这样的:
gamesRef = database.ref('Games').orderByChild('gameId').equalTo(20204315123456)
以上假设 gameId 也是 Games 列表中每个 $gameId 项目的属性。上面的查询将检查属性为“gameId”且等于客户端提供的值(与键相同)的孩子的游戏列表。
希望对您有所帮助。
推荐阅读
- powershell - 在 Connect-MicrosoftTeams 之后选择一个帐户
- css - 如何在 mat-tab-group 的同一行添加链接
- c - 省略参数名称 (C)
- c# - 屏幕右侧的 windows 窗体树视图
- excel - VBA 中的 For 循环计数器增加 1
- javascript - 如何仅在 ajax 请求 django 中附加新数据?
- javascript - 在firebase上托管后我无法看到我的api,即使在部署它之后
- angular8 - Android 6 及更低版本未显示离子选项卡图标
- sql - oracle sql数据表示问题(显示1.12455E+10格式)
- python - python - 如何检查列表中的最后一个元素中有多少在python中是相等的?