Почему мои правила базы данных Firebase Realtime нарушают мой HandleValueChanged? - PullRequest
0 голосов
/ 29 марта 2020

Доброе утро!

Я работаю над проектом Firebase в моей игре Unity и работаю над защитой данных в базе данных, однако всякий раз, когда я обновляю правила, это нарушает мою (иначе работающую) функцию обработки значения дескриптора ,

Структура данных выглядит следующим образом:

User_List -> Firebase_User_ID -> Health: 100, Name: Foo, et c ....

Я хочу правила (как минимум, я добавлю проверку позже) для этих данных:

"USER_LIST":
{
    "$UID" :
    {
            ".read": "auth.uid === $UID",
            ".write" : "auth.uid === $UID",
    }
},

Локально в игре я получаю ссылку с этим вызовом:

FirebaseDatabase.DefaultInstance.GetReference("USER_LIST").Child(USER_ID).ValueChanged += HandleValueChanged;

Если я установлю правила:

            ".read": true,
            ".write" : true

, все будет работать как положено. Клиент может обновить базу данных, а handlevaluechanged выполняет свою работу по синхронизации локальных данных. Когда я переключаюсь на правила выше, где я проверяю идентификатор аутентификации, клиент все еще работает. Он может обновлять базу данных без проблем, при условии, что в систему введен правильный идентификатор пользователя. Тем не менее, моя Handlevaluechanged получает ошибку отказа в разрешении от firebase, как если бы обработчик значения с дескриптором не предоставлял правильный идентификатор пользователя при попытке чтения из БД.

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

Я также пытался получить GetReference на узле USER_LIST вместо узла USER_ID с тем же результатом.

Любое понимание будет с благодарностью! Заранее спасибо.

...