Как разрешить только администраторам читать определенные поля в документе в Cloud Firestore? - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть коллекция документов, где есть некоторые поля, которые должен прочитать только каждый администратор, и некоторые поля, где только администратор может читать / писать. Мои правила выглядят примерно так:

rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {
    match /MyCollection/{document=**} {
      allow read: if request.auth.token.admin == true;
      allow write: if request.auth.token.admin == true;
      match /publicField {
        allow read: if true;
      }
    }
  }
}

, но я получаю Missing or insufficient permissions ошибку при попытке прочитать документы. Как разрешить кому-либо читать publicField любого MyCollection документа?

1 Ответ

2 голосов
/ 15 апреля 2020

Невозможно изменить доступ к отдельным полям в одном документе. Шаблоны сопоставления могут ориентироваться только на пути к документам и ничего не знать о полях документов. Если кто-то может прочитать документ, он всегда может прочитать весь документ.

Если вы хотите изменить права доступа к некоторым данным в документе, их нужно разделить на другой документ. в коллекции с соответствующими правилами безопасности.

Возможно, вам будет интересно прочитать: Компромисс между производительностью, стоимостью и безопасностью в Firestore

...