Безопасные данные в Firebase - Пример Firepad
В настоящее время я занимаюсь разработкой веб-приложения для 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":{
}
}
}
}
}
}
}
Короче говоря, идея состоит в том, чтобы вести общий учет каждого члена с одним значением, которое является идентификатором организации, к которой он принадлежит, и затем использовать его для предоставления им доступа к данным фирмы.
Правила хорошо работают для установки / получения данных $org
такие как изменение "членов" или "ударов в минуту" за исключением 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
}
}
}
}
}
}
}
}
1 ответ
Похоже, у вас на пути странный "процесс":
/ Orgs/1/ Процессы /отросток / firepad / пользователей /0xcNuXRLk0g2fedKfH35qLFxy9R2/ курсор