Попытка установить правило базы данных Firebase Realtime - PullRequest
0 голосов
/ 03 апреля 2019

Я пытаюсь установить следующее правило для базы данных Firebase Realtime:

Я хочу, чтобы пользователь мог только читать записанные записи, в которых определенное поле будет таким же, как идентификатор, с которым онинаписаны в firebase.

Для более ясного объяснения, это идентификатор реестра, который в настоящее время находится в firebase:

8E4792606362B0F7

Реестры, подобные тому, который имеет этот идентификатор, среди других полейв них этот:

sender_identifier: XXXXXXXXX

Некоторые другие реестры с другим идентификатором могут иметь идентификатор отправителя, который точно соответствует этому идентификатору (в данном случае 8E4792606362B0F7).

Я хочу, чтобы те, кто имеет этот идентификатор отправителя, могли читать только те данные реестра, которые точно имеют этот идентификатор.

Столько, сколько я пытаюсь понять эту страницу ,Я не могу понять, как это будет сделано.

Единственное, что я более или менее ясно понимаю, это то, что первая часть правила должна быть "auth.id ==. Но я даже неВот что.

Чтобы прояснить больше вещей, я помещаю SQL-запрос, который понадобится для получения совпадений для этого случая, в случае, когда ID и sender_identifier находятся в обоих полях таблицы реляционной базы данных.

SELECT ID FROM TABLE WHERE sender_identifier="8E4792606362B0F7"

При этом будут возвращены все идентификаторы, которым разрешено чтение из реестра с идентификатором "8E4792606362B0F7", и это потребуется для каждой записи реестра.

Как это будетможно сделать такую ​​вещь?

Редактировать: я загружаю изображение, чтобы прояснить, в чем проблема:

Как видно, идентификатор внутри зеленого эллипса совпадает с идентификатором sender_identifier с другим зеленым эллипсом, поэтому в этом случае идентификатор в зеленом эллипсе должен иметь возможность считывать данные, соответствующие идентификатору в черном круге,Также происходит обратное, идентификатор в черном эллипсе должен быть в состоянии прочитать данные, соответствующие идентификатору в зеленом эллипсе, так как последний имеет sender_identifier (также вне хватает эллипса), что соответствует.

Если бы было проблемой иметь то, что я называю идентификатором, и sender_identifier в «другой иерархии», я мог бы создать новое поле с той же информацией, что и то, что я называю идентификатором, так какЯ тот, кто его генерирует.

1 Ответ

1 голос
/ 03 апреля 2019

Чтобы сопоставить UID пользователя с вашим SENDER_IDENTIFIER и ограничить доступ для чтения с ним, необходимо сделать:

"$YOUR_DOCUMENT": {
    ".read": "data.child('SENDER_IDENTIFIER').val() == auth.uid || 
    $YOUR_DOCUMENT === auth.uid"
}

где пользователь входящего запроса должен иметь UID Firebase, который соответствует SENDER_IDENTIFIER в записи или как имя записи для чтения соответствующих документов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...