Firestore создает правило безопасности не работает, как ожидалось - PullRequest
0 голосов
/ 07 марта 2019

Я создал коллекцию заданий с документом задания, имеющим идентификатор задания (XAXhAJh71hHbe1fY7blZ), и добавил следующие правила безопасности:

match /{document=**} {
    allow read, write: if false;
}

match /jobs/{jobId} {  
    allow create: if request.auth.uid != null;
}

В соответствии с документами создать "Применяется для записи в несуществующие документы". А именно, если документ существует, эту операцию следует отклонить.

Однако симулятор Firestore позволяет создавать поверх существующего документа идентификатор. А именно, эмулятор допускает выполнение create на / jobs / XAXhAJh71hHbe1fY7blZ, даже если документ существует в базе данных.

Скриншот имитатора Firestore

1 Ответ

1 голос
/ 07 марта 2019

Вы неправильно поняли определение создания.Ваше второе предложение здесь не является правильным:

Согласно документам, создайте «Относится к записи в несуществующие документы».А именно, если документ существует, эту операцию следует отклонить.

Правило создания ничего не отклоняет, если документ уже присутствует.Если документ уже присутствует и обновляется, правило создания не применяется вообще.Вместо этого будут применяться любые правила обновления или записи.Если никакие соответствующие правила обновления или записи не разрешают доступ к документу, обновление будет отклонено.

...