我目前正在 Firebase 上开发一个使用 Firepad 作为工具之一的网络应用程序。
在我尝试使用规则保护实时数据库之前,一切都运行良好。这是新规则
{
"rules": {
"allmembers":{
".read":"auth != null",
".write":"auth != null && !data.exists() && newData.exists()"
},
"orgs":{
"$org":{
".read": "data.child('members/'+auth.uid).exists()",
".write": "data.child('members/'+auth.uid).exists()",
"info":{
},
"members":{
},
"processes":{
"$process":{
"bpm":{
},
"firepad":{
}
}
}
}
}
}
}
简而言之,这个想法是用一个单一的值来保存每个成员的一般记录,该值是他们所属组织的 ID,然后用它来让他们访问公司的数据。
这些规则适用于设置/获取数据,$org
例如修改“成员”或“bpm”,除了orgs/$org/processes/$process/firepad
.
那么为什么控制台给我这个警告并且firepad无法在firebase数据库中读写数据呢?
FIREBASE WARNING: set at /orgs/1/processes/processus/firepad/users/0xcNuXRLk0g2fedKfH35qLFxy9R2/cursor failed: permission_denied
编辑:这里是我目前使用和工作的例子。但是,有了规则".read":true
,每个人都可以访问其他组织的 Firepad 吗?
{
"rules":{
"orgs":{
"$org":{
".read":"data.child('members/'+auth.uid).exists()",
".write":"data.child('members/'+auth.uid).exists()",
"info":{
},
"members":{
},
"processes":{
"$process":{
"bpm":{
},
"firepad":{
"history":{
".read":true
},
"checkpoint":{
".read":true
}
}
}
}
}
}
}
}