Я провел некоторое тестирование с несколькими различными условиями и обнаружил, что моя гипотеза кажется верной - условие request.auth.uid != null
«работает», потому что оно выдает ошибку, когда пользователь не аутентифицирован.Это, вероятно, не вызывает никаких проблем в большинстве сценариев, так как вы, вероятно, захотите в любом случае запретить доступ;однако, это вызывает проблему, если вы пытаетесь написать обратное условие request.auth.uid == null
.Так как это приводит к ошибке при отсутствии проверки подлинности, это также приведет к правилу запрета доступа.
Мой вывод заключается в том, что документы технически неверны, и условие, которое следует использовать для проверки подлинности пользователя, равно * 1005.*.Вы можете увидеть результаты моих тестов ниже, с неправильным поведением, выделенным жирным шрифтом.
Тесты
Ограничение доступа, как описано в документах:
allow read, write: if (request.auth.uid != null);
- Аутентифицировано - доступ разрешен
- Не аутентифицирован - запрещен доступ
Альтернативное ограничение доступа:
allow read, write: if (request.auth != null);
- Аутентифицировано - доступ разрешен
- Не аутентифицирован - доступ запрещен
Обратное ограничение (условие документов):
allow read, write: if (request.auth.uid == null);
- Аутентифицировано- доступ запрещен
- не аутентифицирован - доступ запрещен
обратное ограничение (альтернативное условие):
allow read, write: if (request.auth == null);
- Аутентифицировано - доступ запрещен
- Не аутентифицирован - доступ разрешен