Essayer de mettre en œuvre afin que l'utilisateur puisse uniquement accéder aux données de jeu pour les jeux auxquels l'utilisateur joue. Fondamentalement, si l'utilisateur fait partie de la liste des joueurs, l'utilisateur doit être capable de lire. J'ai une liste de joueurs participants dans tous les $ GameID. Tous les utilisateurs ont leur propre nom d'utilisateur unique stocké sous Users -> FirebaseID -> Valeur du nom d'utilisateur.Règles Firebase, limitant l'accès aux seuls utilisateurs participants
Je peux obtenir ce qui suit pour simuler la lecture d'un enfant dans un GameID $ où l'utilisateur fait partie de mais il ne donne pas l'accès à l'utilisateur lorsque j'essaye de lite dans mon application.
Appel à l'application:
GamesDataDatabase = FirebaseDatabase.getInstance().getReference("Games");
GamesDataDatabase.limitToFirst(50).addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
......
Règles:
"Games": {
"$GameID": {
".read": "root.child('Games').child($GameID).child('metaData').child('players').child(root.child('Users').child(auth.uid).child('username').val()).exists()",
ne semble pas y avoir de différence si je remplace "données" avec root.child ('Jeux') enfant ($. gameid)
essayé les choses et de suite, mais ne semble pas être en mesure d'obtenir cette règle de travail ... :(
Cela fonctionnerait-il si je devais passer à Cloud Firsestore (le nouveau programme bêta)? – Mathoa
Je pense que cela peut être possible avec les règles décrites ici: https://firebase.google.com/docs/firestore/security/secure-data#shallow_queries Mais je ne l'ai pas encore essayé. –
Ne devrait-il pas être possible d'ajouter read: false aux Jeux et, en raison de l'accumulation de la base de données en temps réel Firebase, il vérifie l'accès au niveau suivant (enfant)? J'ai essayé mais j'ai obtenu le même résultat, mon utilisateur dans l'application n'a pas eu accès ... (Même si la simulation donne accès ....) – Mathoa