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

216
Vistas
Firestore de permisos faltantes o insuficientes aunque funciona en el campo de juego de reglas

Agregué algunas reglas de seguridad a mi proyecto y las probé en el área de juegos de reglas, todo parece funcionar perfectamente, pero cuando intento recuperar el mismo documento usando el mismo UID de mi sitio web, aparece el error: "FirebaseError: Permisos faltantes o insuficientes".

Referencia a la colección:

dbRef = db.collection("organization").doc(organization).collection(course).doc(courseId).collection("meetings");

Esta es la instantánea de mi código:

función que causa el error

Reglas de seguridad actualizadas

Nota: Ya probé las reglas de seguridad en el campo de juego de reglas con diferentes uids y rutas. Y funcionó perfectamente.

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

0

dbRef = db.collection("organization").doc(organization).collection(course).doc(courseId).collection("meetings"); Esta consulta intenta obtener todos los documentos de la recopilación de meeting .

Existe la posibilidad de que la consulta anterior obtenga documentos donde designation != 'Teacher' && courseId != course ;

Por lo tanto, fallará.

De los documentos de reglas de firestore

si tienes esta regla:

 match /stories/{storyid} { // Only the authenticated user who authored the document can read or write allow read, write: if request.auth != null && request.auth.uid == resource.data.author; }

y esta solicitud db.collection("stories").get() .

La consulta falla incluso si el usuario actual es realmente el autor de cada documento de la historia. El motivo de este comportamiento es que cuando Cloud Firestore aplica sus reglas de seguridad, evalúa la consulta según su conjunto de resultados potencial, no según las propiedades reales de los documentos en su base de datos. Si una consulta podría incluir potencialmente documentos que violan sus reglas de seguridad, la consulta fallará.

la siguiente consulta tiene éxito porque incluye la misma restricción en el campo de autor que las reglas de seguridad:

 var user = firebase.auth().currentUser; db.collection("stories").where("author", "==", user.uid).get()

NB: el patio de recreo solo puede probar la obtención de documentos (no la recopilación de listas).

Solución posible. Puede escribir su consulta de tal manera que nunca pueda devolver el documento incorrecto.

Algo como esto. Cuando un estudiante está inscrito para asistir a una reunión (o curso), agregue su uid al documento de esa reunión. doc = {student_ids = [uidofstudent1, uidOfStudent2, ...]} .

Entonces puedes consultar así:

 db .collection("organization") .doc(organization) .collection(course) .doc(courseId) .collection("meetings") .where('student_ids', arrayContains: studentUid);

Sus reglas de Firestore pueden ser algo como esto:

 match /organisation/{org}/{course}/{courseId}/meetings/{meet=**} { allow read: if request.auth.uid in resource.data.student_ids || isTeacher(request.auth.uid); }
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