firebase - 按数据键的 Firebase 数据库访问规则
问题描述
我有以下类型的 Firebase 数据库数据:
{ sales:
{ -Axyz: {shop_id: 1, name: item1},
-BqwW: {shop_id: 2, name: item2},
-Cwer: {shop_id: 1, name: item3}
}
}
我正在使用身份验证令牌声明来存储访问级别和 ID。我希望管理员可以访问所有记录,而店主只能访问他们的记录。
我有以下数据库规则 - 管理员用户可以访问所有记录,而商店用户可以访问他们自己的记录:
{
"rules": {
"sales": {
".read": "auth.token.admin === true"
"$key": {
".read": "auth.token.shop === true && data.child('shop_id').val() === auth.token.shop_id"
}
}
} }
理想情况下,我想查询 /sales/ 表并获取相关记录的列表 - 管理员用户的所有记录和商店用户的一些记录。
firebase.database().ref('sales').on('value', ....
有可能以这种方式实现吗?
谢谢!
解决方案
感谢评论中的讨论,它现在对我有用。
我使用了https://firebase.google.com/docs/database/security/securing-data#query-based_rules中描述的基于查询的规则
firebase.database().ref('sales')
.orderByChild('shop_id').equalTo(user.claims.shop_id)
.on('value' ...
仅返回此用户允许查看的值列表
推荐阅读
- json.net - 无法卸载“Newtonsoft.Json.11.0.2”,因为某些事情取决于它
- php - 当我尝试在 PHP 中打开 XML 文件时,权限被拒绝
- angular - 如何在表单级别观察模型变化
- python - 从 HTML 页面中提取 css
- php - Laravel - 它可能在具有无符号数据类型字符串的表上添加外键?
- php - 将主键连接到 MySQL 中另一个表的行
- algorithm - 一个完全二叉树的算法问题
- r - 循环遍历行并更改 R 中的缺失值
- javascript - 使用 lodash 转换或规范化嵌套的 JSON
- python - Python Selenium 查找随机生成的元素 ID