reglas realtime guardar datos data auth firebase firebase-database firebase-security

realtime - guardar datos en firebase android



Reglas de la base de datos de Firebase para nombres de usuario Ășnicos (1)

Intento crear un sitio web que use las bases de datos de Firebase para almacenar información del usuario. Quiero usar nombres de usuario únicos. Tengo dos índices, uno para usuarios y otro para nombres de usuario.

Mi base de datos está estructurada así:

users { $uid { username: "username1", gender: "xyz" email: "xyz" } }, usernames { "username1": $uid" }

Los usuarios reclaman un nombre de usuario con su $ uid.

Estas son mis reglas:

{ "rules": { "users": { "$uid": { ".write": "auth !== null && auth.uid === $uid", ".read": "auth !== null && auth.uid === $uid", "username": { ".validate": " !root.child(''usernames'').child(newData.val()).exists() || root.child(''usernames'').child(newData.val()).val() == $uid" } } }, "usernames" : { ".write": "!data.exists() && auth!= null", ".validate": "newData.val() == auth.uid" <---- I can''t get this too work } } }

Al configurar el nombre de usuario en $ uid, comprueba el índice de nombres de usuario para que el nombre de usuario solo pueda escribirse con un nombre de usuario que no esté en uso o que tenga su propio $ uid.

Solo quiero datos en los que el valor sea el usuario autenticado uid y la clave sea el nombre de usuario. No puedo hacer que esto funcione. Sospecho que estoy usando newData (). Val () incorrectamente. Mi declaración de validación está fallando.

Me gustaría evitar el uso de tokens personalizados, pero estoy abierto a cualquier sugerencia. Gracias por adelantado.

Lo siento si esta explicación es demasiado extensa, esta es mi segunda publicación en StackOverflow.

Editar # 2 Hice un poco de investigación de lo que puedo decir y todo lo que puedo encontrar en documentos habla sobre la necesidad de usar .child () antes .val () pero necesito .child para tomar una variable en lugar de un nombre de usuario establecido.


Lo siento si llego tarde pero me encontré con un problema similar, cambié mi regla de nombres de usuario a la siguiente que hizo el truco:

"usernames" : { "$username": { ".write": "!data.exists() && auth!= null && newData.val() == auth.uid" } }, }