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
- Autenticació i autorització: Les regles de seguretat es basen en l'autenticació dels usuaris per determinar qui pot accedir a les dades.
- Condicions: Les regles de seguretat utilitzen condicions per permetre o denegar l'accés a les dades.
- 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.
- Solució: Utilitza
-
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
- Introducció a l'autenticació de Firebase
- Autenticació amb correu electrònic i contrasenya
- Autenticació amb xarxes socials
- Gestió d'usuaris
Mòdul 3: Base de dades en temps real de Firebase
- Introducció a la base de dades en temps real
- Lectura i escriptura de dades
- Estructura de dades i regles de seguretat
- Capacitats fora de línia
Mòdul 4: Cloud Firestore
- Introducció a Cloud Firestore
- Model de dades de Firestore
- Operacions CRUD
- Consultes avançades
- Regles de seguretat
Mòdul 5: Emmagatzematge de Firebase
- Introducció a l'emmagatzematge de Firebase
- Carregar fitxers
- Descarregar fitxers
- Metadades de fitxers i seguretat
Mòdul 6: Missatgeria en el núvol de Firebase
- Introducció a la missatgeria en el núvol
- Enviar notificacions
- Gestionar notificacions
- Funcions avançades de missatgeria
Mòdul 7: Analítica de Firebase
Mòdul 8: Funcions de Firebase
Mòdul 9: Monitoratge del rendiment de Firebase
- Introducció al monitoratge del rendiment
- Configuració del monitoratge del rendiment
- Analitzar dades de rendiment