Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

118
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!