Доброе утро!
Я работаю над проектом 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 с тем же результатом.
Любое понимание будет с благодарностью! Заранее спасибо.