Lección 12 de 16 · Lectura y práctica
Integración con Firebase Firestore
Practica integración con firebase firestore con un ejemplo resuelto, un ejercicio y una infografía.
Del concepto a la práctica
Taller de esta lección
Firestore introduce una colección remota cuyos documentos deben tener una identidad y reglas de acceso coherentes. La aplicación no debe confiar en que ocultar una pantalla proteja los datos: la autorización se decide en el backend configurado, mientras el cliente representa permisos y errores.
Ejemplo resuelto
Una colección tasks contiene el documento u7_t1 con ownerId: u7, title: Preparar agenda y done: false. Una lectura directa de ese documento autenticada como u7 puede obtenerlo; la misma lectura como u8 debe ser rechazada. El cliente muestra el documento para u7 y un error de acceso para u8.
En el emulador de laboratorio, define que get y list solo se permitan cuando request.auth != null y resource.data.ownerId == request.auth.uid. Para crear, compara el propietario nuevo (request.resource.data.ownerId) con el UID autenticado; para actualizar, exige además que el propietario anterior y el nuevo sean iguales. Valida título y estado según el contrato. La consulta del cliente debe incluir where("ownerId", isEqualTo: uid). Prueba también un cambio de propietario y una lectura sin sesión: ambos deben ser rechazados.
Pruébalo
Define dos usuarios de prueba,
u7yu8.Crea el documento con propietario
u7.Simula lecturas autenticadas por ambos usuarios.
Registra contenido o error, sin ocultar el motivo.
Error frecuente: filtrar por ownerId solo después de descargar datos. Corrígelo aplicando la condición en la consulta y en las reglas autorizadas.
Comprueba tu resultado
u7 debe obtener exactamente Preparar agenda; la lectura directa de u8 debe obtener permission-denied. Una consulta separada con ownerId == u8 puede estar autorizada y devolver cero documentos; las reglas no filtran silenciosamente resultados ajenos. No debe aparecer el documento ajeno en memoria ni en la interfaz.

Mapa de prácticaEl control de acceso, las actualizaciones y las copias de seguridad cubren riesgos distintos. Una alerta necesita un procedimiento de respuesta para contener y recuperar el servicio. Varias capas reducen la exposición, pero ninguna garantiza seguridad absoluta.
Ver la infografía en tamaño completo ↗Fuentes para profundizar
Sigue con Desarrollo de Apps Móviles con Flutter - Nivel Intermedio
Esta lección forma parte de un curso de Cursalo. Revisa su programa y elige entre la compra individual o el acceso a toda la escuela.
Si ya tenías acceso a este curso, entra con tu cuenta: tus derechos y tu progreso se conservan. No necesitas comprarlo de nuevo.