2017-11-14 2 views
0

Ich versuche herauszufinden, wie Sie ein sensibles Feld in einem Firestore-Dokument entfernen. Zum Beispiel ist meine Sammlung eine Gruppeninformation. Die Gruppe ist mit einem Pin-Code-Feld geschützt. Jeder, der der Gruppe beitreten möchte, muss den PIN-Code kennen.Firestore: Entfernen Sie sensible Felder auf Dokumenten

In der Zwischenzeit möchte ich Benutzer abfragen lassen, welche Gruppe zur Teilnahme verfügbar ist. Für den Abfrageteil möchte ich keine Gruppeninformationen mit PIN-Code-Informationen zurückgeben. Müssen wir trotzdem sensible Felder aus einem Dokument für Firestore zum Lesen entfernen?

Cloud-Funktion unterstützt nur Schreib-Ereignis. Eine mögliche Lösung ist die Verwendung der Cloud-Funktion für das Schreib-Ereignis und das Eingeben des Pin-Codes in ein separates Dokument. Gibt es eine bessere Lösung? Vielen Dank.

Meine Gruppe Schema ist:

group: { 
    name: string, 
    pinCode: string 
} 
+1

Sie sollten sicherheitsrelevante Werte mit einer anderen Sammlung trennen. Seit Firestore erhalten Methode kann Objekt mit selektiven Feldern nicht erhalten. – wonsuc

Antwort

2

Ein Benutzer kann entweder ein Dokument zuzugreifen, oder sie können nicht. In Firestore gibt es keine Zugriffssteuerung auf Eigenschaftsebene.

Um zu erreichen, was Sie wollen, müssen Sie die öffentlichen und privaten Informationen in separaten Dokumenten speichern.

Sie könnten entweder ein zweites Dokument mit den privaten Informationen in der gleichen Sammlung erstellen und dann sichern Sie sie mit:

match /databases/{database}/documents { 
    match /groups/{group} { 
     allow read: if resource.data.visibility != "private" 
    } 
} 

Alternativ (und einfacher zu sichern) Sie eine separate Sammlung für die privaten Dokumente erstellen konnten.

Verwandte Themen