Introducció

Les regles de seguretat de Cloud Firestore són essencials per protegir les dades de la teva aplicació. Aquestes regles defineixen qui pot accedir a les dades i com es poden modificar. En aquest tema, aprendrem a escriure i aplicar regles de seguretat per assegurar que només els usuaris autoritzats puguin accedir i modificar les dades de la teva base de dades.

Conceptes clau

  1. Autenticació i autorització: Les regles de seguretat es basen en l'autenticació dels usuaris per determinar qui pot accedir a les dades.
  2. Condicions: Les regles de seguretat utilitzen condicions per permetre o denegar l'accés a les dades.
  3. Estructura de les regles: Les regles de seguretat es defineixen en un fitxer de configuració que segueix una estructura específica.

Estructura de les regles de seguretat

Les regles de seguretat de Firestore es defineixen en un fitxer firestore.rules. Aquest fitxer segueix una estructura jeràrquica que reflecteix l'estructura de la base de dades. A continuació es mostra un exemple bàsic de la sintaxi de les regles de seguretat:

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if false;
    }
  }
}

Explicació del codi

  • service cloud.firestore: Indica que les regles són per a Firestore.
  • match /databases/{database}/documents: Defineix el nivell de la base de dades i els documents.
  • match /{document=**}: Aplica les regles a tots els documents de la base de dades.
  • allow read, write: if false;: Denega tots els accessos de lectura i escriptura.

Exemples pràctics

Permetre l'accés només a usuaris autenticats

service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if request.auth != null;
    }
  }
}

Permetre l'accés només a l'usuari propietari del document

service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{userId} {
      allow read, write: if request.auth != null && request.auth.uid == userId;
    }
  }
}

Permetre l'accés de lectura a tothom, però l'escriptura només a usuaris autenticats

service cloud.firestore {
  match /databases/{database}/documents {
    match /public/{document=**} {
      allow read: if true;
      allow write: if request.auth != null;
    }
  }
}

Exercicis pràctics

Exercici 1: Crear regles per a una col·lecció de missatges

Descripció: Escriu regles de seguretat per a una col·lecció de missatges on només l'usuari que ha creat el missatge pot modificar-lo, però tots els usuaris autenticats poden llegir els missatges.

Solució:

service cloud.firestore {
  match /databases/{database}/documents {
    match /messages/{messageId} {
      allow read: if request.auth != null;
      allow write: if request.auth != null && request.auth.uid == resource.data.userId;
    }
  }
}

Exercici 2: Crear regles per a una col·lecció de projectes

Descripció: Escriu regles de seguretat per a una col·lecció de projectes on només els membres del projecte poden llegir i escriure dades.

Solució:

service cloud.firestore {
  match /databases/{database}/documents {
    match /projects/{projectId} {
      allow read, write: if request.auth != null && request.auth.uid in resource.data.members;
    }
  }
}

Errors comuns i consells

  • Error: Denegar l'accés a tots els usuaris per defecte.

    • Solució: Assegura't de definir regles que permetin l'accés als usuaris autenticats o autoritzats.
  • Error: No validar l'autenticació de l'usuari.

    • Solució: Utilitza request.auth != null per assegurar-te que l'usuari està autenticat abans de permetre l'accés.
  • Consell: Utilitza variables i funcions per simplificar les regles complexes i evitar la duplicació de codi.

Conclusió

Les regles de seguretat de Firestore són una eina poderosa per protegir les dades de la teva aplicació. Amb una comprensió clara de com escriure i aplicar aquestes regles, pots assegurar-te que només els usuaris autoritzats tinguin accés a les dades. Practica escrivint diferents regles per a diferents escenaris per familiaritzar-te amb la seva sintaxi i funcionalitat.

Curs de Firebase

Mòdul 1: Introducció a Firebase

Mòdul 2: Autenticació de Firebase

Mòdul 3: Base de dades en temps real de Firebase

Mòdul 4: Cloud Firestore

Mòdul 5: Emmagatzematge de Firebase

Mòdul 6: Missatgeria en el núvol de Firebase

Mòdul 7: Analítica de Firebase

Mòdul 8: Funcions de Firebase

Mòdul 9: Monitoratge del rendiment de Firebase

Mòdul 10: Laboratori de proves de Firebase

Mòdul 11: Temes avançats de Firebase

© Copyright 2024. Tots els drets reservats