2017-10-08 4 views
6

Je reçois une erreur lorsque j'essaie d'écrire dans Firestore.Autorisations manquantes ou insuffisantes lors de l'écriture dans Firestore à l'aide du champ des règles d'accès

J'essaie d'utiliser un champ contenant l'UID utilisateur pour ma règle de sécurité.

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; 
    } 
    } 
} 

Si j'ai données dans ma base de données de Firestore, la règle de lecture fonctionne très bien - mais quand je tente d'écrire je reçois: Error: Missing or insufficient permissions. Y at-il quelque chose que je fais mal avec cette règle d'écriture?

P.S. Si je change ma règle à cela, je suis capable d'écrire à ma base de données - mais cela ne suffit pas pour sécuriser mes fins:

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

Répondre

7

resource.data se réfère aux données déjà stockées, de sorte que votre règle les utilisateurs autorisés à mettre à jour uniquement les données qui incluent déjà leur ID utilisateur.

Ce que vous voulez probablement vérifier est request.resource.data ce qui est des nouvelles données à venir dans

Il y a un document assez vaste au sujet de ces domaines et d'autres règles de sécurité:. https://firebase.google.com/docs/firestore/security/secure-data

+0

Merci qui a travaillé. Les documents Firebase ont besoin d'être mis à jour, ils ne donnent que l'exemple pour lire, ils devraient donner l'exemple pour écrire aussi .... –

+0

@LeoFarmer il y a un document assez complet sur les différentes règles de sécurité ici: https://firebase.google.com/ docs/firestore/sécurité/données sécurisées – Scarygami