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

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

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 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!