Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

122
Vistas
Firestore gobierna 'Lectura simulada permitida' pero falla en el navegador

Mis reglas de seguridad son súper simples. Tengo dos colecciones: riders y races :

  • riders : solo se puede leer o escribir cuando el usuario ha iniciado sesión
  • races : puede ser leído por un usuario no autenticado; escrito cuando el usuario inicia sesión.
 service cloud.firestore { match /databases/{database}/documents { // restrict read/write on all to authenticated match /{document=**} { allow read, write: if request.auth != null; // then allow collection read if match match /races/{id} { allow read, list: if true; } } } }

Estas reglas permiten lo que parece ser la configuración correcta usando el Rules Playground de las consolas de Firebase, pero en los usuarios de autenticación del navegador se comportan como se esperaba, pero a los usuarios no autenticados se les devuelve un error cuando llaman a una carrera:

 core.js:6456 ERROR FirebaseError: Missing or insufficient permissions. at new e (prebuilt-47338342-439a2133.js:188) at prebuilt-47338342-439a2133.js:10415 at prebuilt-47338342-439a2133.js:10416 at e.onMessage (prebuilt-47338342-439a2133.js:10438) at prebuilt-47338342-439a2133.js:10355 at prebuilt-47338342-439a2133.js:10386 at prebuilt-47338342-439a2133.js:15146 at ZoneDelegate.invoke (zone.js:372) at Zone.run (zone.js:134) at zone.js:1276
 // service call this.racesCollection = this.firestore.collection<Race>('races'); this.racesCollection .doc(id) .valueChanges() .pipe(takeUntil(this.destroy$)) .subscribe((response: any) => { console.log('=== APP SERVICE emits race ===', response); this.race.next(response); });

He intentado reescribir las reglas, pero parece que no puedo encontrar mi camino alrededor de esta. ¡Cualquier ayuda o idea apreciada! Gracias.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Debe escribir sus reglas de seguridad de tal manera que se superpongan :

 service cloud.firestore { match /databases/{database}/documents { // restrict read/write on all to authenticated match /{document=**} { allow read, write: if request.auth != null; } // then allow read for the races collection for all users match /races/{id} { allow read, list: if true; } } }

Además, tenga en cuenta que list es un "subcaso" de read , por lo que puede eliminar la regla de list , es decir, simplemente allow read: if true; .


Por cierto, el simulador muestra correctamente que sus reglas no permiten leer un documento en la colección de races si no está autenticado.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda