Хорошо, я думаю, вы создаете дополнительные ненужные шаги проверки.
Сначала
С ".read": "auth != null"
на вашем users
root ,каждый пользователь может получить доступ к данным другого пользователя, поэтому мы должны адресовать доступ для каждого пользователя индивидуально .
Второй
Если вы просто хотите разрешить аутентификацию пользователейчтобы написать и прочитать собственное содержимое, вы можете удалить эти дополнительные ((newData.exists() && !data.exists())
и auth.token.email == data.child(\"userEmail\").val())
шаги.
Совет: это ((newData.exists() && !data.exists())
сравнение означает точно: Пишите здесь, если вы отправляете что-либо но в этом запрошенном «пути» ничего не должно быть написано. Вы должны подумать о необходимости этого, так как Я не знаю ваших точных вариантов использования .
Кроме того, я бы предположил, что UID, который вы запрашиваете, UID, который вы запрашиваете, от созданного вами администратора - я бы не рекомендовал этого, пожалуйста, прочитайте больше о ролях пользователей в этом ответе .
Чтобы уточнить, я думаю, что ваша структура правил должна выглядеть примерно так:
{
"rules": {
".write":"auth.uid == \"DFhNb28506Y345CpJ3Ye7DQNn713\",
".read": "auth.uid == \"DFhNb28506Y345CpJ3Ye7DQNn713\",
"users": {
"$uid": {
".read": "$uid === auth.uid",
".write": "$uid === auth.uid"
}
}
}
}