Fehlende oder Unzureichende Berechtigungen beim schreiben zu Firestore über das Feld in access-Regeln
Ich erhalte eine Fehlermeldung, wenn Sie versuchen zu schreiben, Firestore.
Ich bin versucht, ein Feld mit der user-uid für meine Sicherheit Regel.
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 meine Firestore-Datenbank, die read-Regel funktioniert gut, aber wenn ich Versuch zu schreiben, den ich bekommen: Error: Missing or insufficient permissions.
Gibt es etwas, was ich falsch mache mit diesem schreiben die Regel?
P. S. Wenn ich meine Regel, ich in der Lage bin, zu schreiben, zu meiner Datenbank - aber das ist nicht sicher genug für meine Zwecke:
match /messages/{document=**} {
allow read: if resource.data.user_uid == request.auth.uid;
allow write: if request.auth != null;
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
resource.data
bezieht sich auf die Daten, die bereits gespeichert sind, so dass Ihre Regel erlaubt Benutzern, nur die Daten zu aktualisieren, die bereits mit Ihrer Benutzer-ID.Was Sie wahrscheinlich wollen, um zu überprüfen, ist
request.resource.data
den neuen Daten kommen.Es ist ein ziemlich umfangreiches Dokument über die Felder und andere Sicherheits-Regeln hier: https://firebase.google.com/docs/firestore/security/rules-conditions
Diese Frage und die akzeptierten Antworten waren sehr hilfreich für mich. Ich landete mit einem etwas anderen Satz von Regeln, die im ich werde teilen, hier incase jemand findet Sie nützlich.
Wie der OP, ich store eine Benutzer-ID (
uid
) mit meinen Ressourcen. Jedoch, wenn ich will erstellen Sie eine neue Ressource, es gibt keineuid
noch. Mit einem Beispiel in der Dokumentation landete ich mit Sicherheit Regeln, die wie folgt Aussehen: