【发布时间】:2016-04-01 09:53:54
【问题描述】:
我的 Firebase 中有以下数据结构:
{
"groups" : {
"-KEFQ7rTQscPX4hqn6ec" : {
"createdBy" : "b5cd3a86-108e-4ef3-9ab8-8a1e4da7491c",
"description" : "Test",
"isPublic" : true,
"title" : "T1"
},
"-KEFQao_Wd-Y-nLzIx2e" : {
"createdBy" : "b5cd3a86-108e-4ef3-9ab8-8a1e4da7491c",
"description" : "B",
"isPublic" : false,
"title" : "E"
}
}
并且我正在努力实现以下目标:
- 每个人都可以通过 "isPublic" == true 阅读所有组
- 只有登录的用户才能看到他们创建的组
我的第一种方法是:
{
"rules": {
"groups": {
".read": true,
"$id": {
".read": "data.child('isPublic').val() === true"
}
}
}
}
This stackoverflow post 解释了为什么它不起作用,但我不知道如何使它起作用。
编辑 1:
This post 对公共/私人问题(我的第一个问题)有解决方案,但对第二个问题没有解决方案。
编辑 2:
感谢@VonD 为公共/私人问题提供有效的解决方案。
有了这个解决方案,公共/私有的问题就解决了。考虑到一个私有组有很多成员,并且他们的用户 ID 将存储在另一个数组“成员”中 - 如果我是成员,我将如何只允许访问该组?
"privateGroups": {
"b5cd3a86-108e-4ef3-9ab8-8a1e4da7491c": {
"-KEFQao_Wd-Y-nLzIx2e" : {
"createdBy" : "b5cd3a86-108e-4ef3-9ab8-8a1e4da7491c",
"description" : "B",
"title" : "E",
"members": [userId1, userId2, userId3...]
}
}
}
【问题讨论】:
标签: firebase firebase-security