在这个例子中,Rick是列表的管理员,Tom只是一个成员。现在我想让这些规则,例如,只允许在 "项目 "节点下进行读写,如果用户的ID在 "成员 "节点下出现。

现在我有两个问题。 1.这种方法是正确的,还是我的整个数据结构应该为此目的而不同? 2.如果结构没有问题,我应该如何编写规则,以便获得上述行为,以及如何为每个列表生成一个唯一的id?

android
firebase-realtime-database
firebase-authentication
data-sharing
BramH
BramH
发布于 2018-02-02
1 个回答
Frank van Puffelen
Frank van Puffelen
发布于 2018-02-02
已采纳
0 人赞同

乍看之下,这似乎是一个合理的起点。我只是用一个简单的 true 来取代 "与键相同的值",以节省几个字节的存储/带宽。除此之外,如果不了解所有的使用情况,很难给出更多的 "硬 "建议。

你可能还想考虑最近的一个变化。 安全规则现在可以验证查询了 这意味着你有可能不使用 /users/$uid/lists 索引。我建议你尝试一下,看看它是否适合你的使用情况。

为了只允许该列表的成员读取访问,这些规则可以作为一个起点。

"rules": { "lists": { "$listid": { "items": { ".read": " data.parent().child('members').child('admin').val() === auth.uid || data.parent().child('members').child(auth.uid).exists()