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

219
Vistas
cómo consultar desde la base de datos en tiempo real de firebase con reglas de seguridad aplicadas

He configurado reglas básicas de seguridad de la base de datos en tiempo real de firebase para esta pregunta. Antes de saltar al problema, creé una aplicación móvil Flutter con GetX y también instalé el complemento http: ^0.13.4 para realizar consultas.

Así es como configuro las reglas de seguridad.

 { "rules":{ ".read" : "auth.uid !== null && auth.token.email_verified == true", ".write" : "auth.uid !== null" } }

Básicamente, quiero que los usuarios puedan leer los datos si están autenticados y verificados por correo electrónico.

Y para la regla de escritura, solo si el usuario está autenticado y las notificaciones personalizadas de isAdmin se establecen en verdadero. Para isAdmin, no sé configurarlo en las reglas de seguridad.

¿Es algo como esto?

 "auth.uid !== null && root.child('isAdmin').val() == true"

De todos modos, mi problema es cómo consultar usando el complemento http en el lado del cliente. Aquí hay una muestra de la consulta GET

 Uri url = Uri.parse('URL HERE with /.json file'); getIPTIdAndName() async { iptList.value = []; await http.get(url, headers: {"Authorization": FirebaseAuth.instance.currentUser!.uid}).then( (value) { var response = json.decode(value.body) as List<dynamic>; for (var i = 0; i < response.length; i++) { iptList.add({ "iptIndex": i, "iptId": response[i]['id'], "iptName": response[i]['name'] }); } iptList.refresh(); }, ); }

¿Cómo consultar si las reglas de seguridad están establecidas?

código ACTUALIZADO

 //create a function inside authController and called it inside the javascript Future<String> getIdToken() async{ return await FirebaseAuth.instance.currentUser!.getIdToken(); } getIPTIdAndName() async { iptList.value = []; Uri url = Uri.parse('$urlString?auth=${await auth.getIdToken()}'); await http.get(url).then( (value) { var response = json.decode(value.body) as List<dynamic>; for (var i = 0; i < response.length; i++) { iptList.add({ "iptIndex": i, "iptId": response[i]['id'], "iptName": response[i]['name'] }); } iptList.refresh(); }, ); } //security rules { "rules":{ ".read" : "auth != null && auth.token.email_verified == true", ".write" : "auth != null && auth.token.admin == true" } }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Si Firebase aceptara el UID como un parámetro de URL, eso sería terriblemente inseguro, ya que cualquiera podría pasar su UID y obtener acceso a sus datos.

En su lugar, debe pasar el token de ID, que es una versión codificada de todos los datos del usuario, que los servidores de Firebase pueden decodificar y pasar la variable de auth a sus reglas.

Para obtener más información sobre esto, consulte la documentación sobre la autenticación de solicitudes a la API REST de Firebase Realtime Database , específicamente la sección sobre la autenticación con un token de ID .

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