2017-10-08 1 views
6

Ich erhalte eine Fehlermeldung beim Versuch, in Firestore zu schreiben.Fehlende oder unzureichende Berechtigungen beim Schreiben in Firestore über Feld in Zugriffsregeln

Ich versuche, ein Feld zu verwenden, das die Benutzer-UID für meine Sicherheitsregel enthält.

service cloud.firestore { 
    match /databases/{database}/documents { 

    match /messages/{document=**} { 
     allow read: if resource.data.user_uid == request.auth.uid; 
     allow write: if resource.data.user_uid == request.auth.uid; 
    } 
    } 
} 

Wenn ich Daten in meiner Firestore-Datenbank haben, arbeitet die Lese Regel in Ordnung - aber wenn ich zu schreiben versuchen, erhalte ich: Error: Missing or insufficient permissions. Gibt es etwas, was ich falsch mache mit dieser Zuschreibung Regel?

P.S. Wenn ich diese meine Regel ändern, ich bin in der Lage zu meiner Datenbank zu schreiben - aber dies ist für meine Zwecke nicht sicher genug:

match /messages/{document=**} { 
     allow read: if resource.data.user_uid == request.auth.uid; 
     allow write: if request.auth != null; 
    } 

Antwort

7

resource.data auf die Daten bezieht sich bereits gespeichert, so dass die Regel erlaubt Benutzer Aktualisieren Sie nur Daten, die bereits ihre Benutzer-ID enthalten.

Was Sie wahrscheinlich überprüfen wollen, ist request.resource.data, welche die neuen Daten kommen in

Es ist ein ziemlich umfangreiches Dokument über diese Felder und andere Sicherheitsregeln hier:. https://firebase.google.com/docs/firestore/security/secure-data

+0

Dank, das funktioniert. Die Firebase-Dokumente müssen aktualisiert werden, sie geben nur das Beispiel zum Lesen, sie sollten das Beispiel zum Schreiben auch geben. –

+0

@LeoFarmer gibt es ein ziemlich umfangreiches Dokument über verschiedene Sicherheitsregeln hier: https://firebase.google.com/ docs/firestore/sicherheit/sichere-daten – Scarygami

Verwandte Themen