2016-02-16 1 views
3

J'ai lu the docs, et je ne suis pas sûr de la différence entre la règle d'écriture et la section de règle de validation. Ce code est-il redondant? Tout point d'utiliser l'un ou l'autre, ou les deux?Cette règle Firebase est-elle redondante? Quand utiliser write vs validate?

Plus précisément: « . Utilisateur doit être connecté, et la valeur écrite doit être le uid

  • «

    • « valide » dire écrire » l'autorisation dit que vous ne pouvez écrire à la section user_id $ si la valeur correspond à votre uid.
    { 
        "rules": { 
        "users": { 
         ".validate": "auth != null && newData.val() === auth.uid", 
         "$user_id": { 
         ".write": "$user_id === auth.uid" 
         } 
        } 
        } 
    } 
    
  • +0

    Je suis également confus avec eux. –

    +1

    Je trouve une bonne explication. Voir ceci, https://www.firebase.com/docs/security/api/rule/validate.html –

    Répondre

    4

    la seule différence est que .validate ne se propage pas à ses enfants.

    En réponse à votre question, dans votre exemple, vous pouvez simplement utiliser ".write".

    ".write": "auth != null && $user_id === auth.uid"

    +0

    Chose mineure, mais notez que .validate n'est évalué que si une règle .write a accordé l'accès. Je suppose que cela ne fait pas beaucoup de différence, cependant. –

    0

    Techniquement, il pourrait ne pas être (sauf propagation) toute différence, mais à mon avis, il y a une différence.

    Par exemple, la sécurité est la principale préoccupation du .write tandis que l'intégrité des données est la principale préoccupation du .validate.

    Par exemple:

    Tenir compte que nous écrivons au chemin /books/{bookKey}/name.

    1. L'utilisateur est autorisé à écrire sur ce chemin est .write. Les vérifications comme l'utilisateur connecté peuvent être effectuées ici.
    2. L'utilisateur entre-t-il le bon nom pour le livre? Est-ce que .validate est concerné? Par exemple, le nom doit comporter plus de 3 caractères, doit commencer par des caractères ...

    P.S. En outre compte this problème avec multi-ligne, il est bon d'avoir deux méthodes séparées pour plus de lisibilité.