Мне было интересно, что такое соглашение в отношении неопределенных свойств с правилами безопасности firestore.
Например, в следующем правиле, которое проверяет пользовательское утверждение:
allow read: if request.auth.token.claims.admin;
Существует множество точек для ошибки неопределенного свойства, наиболее вероятным из которых является то, что если пользователь не аутентифицирован, то request.auth
будет неопределенным, поэтому request.auth.token.claims.admin
будет пытаться получить доступ к свойству неопределенного значения.
Я заметил, что в документации request.auth.uid
- это общая проверка, и они не проверяют, определен ли сначала request.auth
. Однако в своем исследовании я заметил, что некоторые люди выполняют проверку похожих запросов, например в этом ответе о переполнении стека .
Ниже приведен аннотированный скриншот того, что возвращает симулятор. Насколько я понимаю, эта проверка для неопределенных свойств не является необходимой для безопасности. Мой вопрос скорее о том, что такое стандарт, и если не проверка на неопределенные свойства является стандартом, то почему симулятор выдает ошибку?
Напримечание, какое из следующего (явные или явные логические условия) является предпочтительным и почему:
allow read: if request.auth.token.claims.admin;
allow read: if request.auth.token.claims.admin == true;