【发布时间】:2016-05-15 10:17:46
【问题描述】:
我正在为使用 Bolt 编译器创建的 Firebase 数据结构设置验证规则。
我目前有以下 Bolt 语句:
path /sharedEvents/{share} is Boolean[] {
read() { isMailOfCurrentUser( share ) }
create() { isOwnerOfEvent( ...) } //NOT YET CORRECT!
delete() { isOwnerOfEvent( prior(...) } //NOT YET CORRECT!
}
有了这个,我正在努力实现:
- 只有拥有与“share”键对应的邮件的用户才能读取数据(他们使用此日期来检索与他们共享的事件的键。
- 只有活动的所有者才能将其活动的密钥添加/删除到共享活动列表中。
第二点是我遇到麻烦的地方-我无法创建创建/删除规则-因为我不知道如何在验证规则中引用布尔值的键...
上述 bolt 语句在 Firebase 中的示例数据:
sharedEvents
ZW5kc3dhc0BldmVyeW1hMWwuYml6
-BDKBEvy-hssDhKqVF5w: true
-FDKBEvy-hsDsgsdsf5w: true
-ADBEvy-hfsdsdKqVF5w: true
aXQnc251bWJlcnNAbWExbDJ1LnVz
-KBEvy-hsDhH6OKqVF5w: true
为了澄清这个例子的需求: 只有拥有邮件“ZW5kc3dhc0BldmVyeW1hMWwuYml6”的用户才能阅读三个嵌套的孩子。 只有事件 '-BDKBEvy-hssDhKqVF5w' 的所有者才能创建/删除此值。 (其他事件键/布尔值对相同)。
我的问题:此设置是否可行(以及如何设置创建/删除规则)?或者这不起作用,我应该重新考虑/构建数据吗?
感谢任何帮助!
------输出 JSON 文件--------------------------- ---------------
上面的问题已经回答了,这部分显示的是生成的json
"sharedEvents": {
"$share": {
".read": "<removed for readability>",
"$event": {
".validate": "newData.isBoolean()",
".write": "<removed for readability>"
}
}
},
再次感谢您的快速支持!
【问题讨论】:
-
嘿彼得,我还不清楚你的数据结构。我认为您有一个实际事件数据所在的顶级节点。如果是这样,您也可以添加该 JSON 的 sn-p 吗?
-
我也认为你会有一些从
auth.uid映射到你称之为“邮件”的值的节点。请也添加。
标签: firebase firebase-security firebase-realtime-database