Recherche…


Remarques

Les règles de base de données Firebase Realtime déterminent qui a un accès en lecture et en écriture à votre base de données, la structure de vos données et les index existants. Ces règles résident sur les serveurs Firebase et sont appliquées automatiquement à tout moment. Chaque demande de lecture et d'écriture ne sera complétée que si vos règles le permettent. Par défaut, vos règles sont définies pour autoriser uniquement les utilisateurs authentifiés à accéder en lecture et en écriture à votre base de données. Cela permet de protéger votre base de données contre les abus jusqu'à ce que vous ayez le temps de personnaliser vos règles ou de configurer l'authentification.

Les règles de base de données Firebase ont une syntaxe de type JavaScript et sont de quatre types:

entrer la description de l'image ici

Autorisation

Identifier votre utilisateur n'est qu'une partie de la sécurité. Une fois que vous savez qui ils sont, vous avez besoin d'un moyen de contrôler leur accès aux données de votre base de données. Les règles de base de données Firebase vous permettent de contrôler les accès pour chaque utilisateur. Par exemple, voici un ensemble de règles de sécurité permettant à quiconque de lire le chemin /foo/ , mais personne ne lui écrit:

{
  "rules": {
    "foo": {
      ".read": true,
      ".write": false
    }
  }
}

.read règles .read et .write sont en cascade, donc cet ensemble de règles accorde un accès en lecture à toutes les données de path / foo / ainsi que des chemins plus profonds tels que /foo/bar/baz . Notez que les règles .read et .write qui autorisent l'accès remplaceront les autres règles de la base de données qui ne permettent pas l'accès; En d'autres termes, toutes les règles applicables, .read et .write sont ORed ensemble). Ainsi, l'accès en lecture à /foo/bar/baz serait toujours accordé dans cet exemple, même si une règle du chemin /foo/bar/baz évaluée à false.

Les règles de base de données Firebase incluent des variables et des fonctions intégrées qui vous permettent de vous référer à d'autres chemins, à des horodatages côté serveur, à des informations d'authentification, etc. Voici un exemple de règle qui accorde un accès en écriture aux utilisateurs authentifiés à /users/<uid>/ , où est l'ID de l'utilisateur obtenu via l'authentification Firebase.

{
  "rules": {
    "users": {
      "$uid": {
        ".write": "$uid === auth.uid"
      }
    }
  }
}

La validation des données

La base de données Firebase Realtime est schemaless. Cela permet de changer les choses au fur et à mesure de votre développement, mais une fois que votre application est prête à être distribuée, il est important que les données restent cohérentes. Le langage de règles inclut une règle .validate qui vous permet d'appliquer la logique de validation en utilisant les mêmes expressions que celles utilisées pour les règles .read et .write . La seule différence est que toutes les règles de validation pertinentes doivent être évaluées à true pour que l'écriture soit autorisée (en d'autres termes, toutes les règles .validate applicables sont regroupées pour permettre une écriture de base de données).

Ces règles imposent que les données écrites dans /foo/ doivent être une chaîne de moins de 100 caractères:

{
  "rules": {
    "foo": {
      ".validate": "newData.isString() && newData.val().length < 100"
    }
  }
}

Les règles de validation ont accès à toutes les mêmes fonctions et variables .read que les règles .read et .write . Vous pouvez les utiliser pour créer des règles de validation prenant en compte les données se trouvant ailleurs dans votre base de données, l'identité de votre utilisateur, l'heure du serveur, etc.

Définition des index de base de données

La base de données en temps réel Firebase permet de commander et d'interroger des données. Pour les petites tailles de données, la base de données prend en charge les requêtes ad hoc, de sorte que les index ne sont généralement pas requis lors du développement. Cependant, avant de lancer votre application, il est important de spécifier des index pour toutes les requêtes que vous avez pour vous assurer qu'elles continuent à fonctionner à mesure que votre application se développe.

Les index sont spécifiés à l'aide de la règle .indexOn . Voici un exemple de déclaration d'index qui indexerait les champs de hauteur et de longueur pour une liste de dinosaures:

{
  "rules": {
    "dinosaurs": {
      ".indexOn": ["height", "length"]
    }
  }
}


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow