2017-11-16 4 views
0

Ich muss einige Regeln in Firebase implementieren, um meine Daten zu schützen.Wie schützt man einen Firebase-Knoten in Abhängigkeit vom Geschwisterknoten?

Nehmen wir an, ich habe Knoten ein und Knoten b. Die Struktur ist wie folgt:

{ 
    a: 
    [ 
     a1: {uid: 123}, 
     a2: {uid: 321}, 
     a3: {uid: 567} 
    ], 
    b: 
    [ 
     a1: {data: 'foo.bar'}, 
     a2: {data: 'foo.bar'}, 
     a3: {data: 'foo.bar'} 
    ] 
} 

Wie in dem obigen Beispiel die Kindknoten vona sind die Tasten des Knotens b. Wie kann ich den Zugriff auf Daten des Knotens b je nach uid Knoten ein beschränken?

Zum Beispiel. Der Benutzer mit uid 123 in dem Knoten a, sein Schlüssel ist a1, also in Knoten b nur Daten von untergeordneten Knoten a1 abrufen kann (B -> A1).

Antwort

1

Ich denke, ein Regelsystem, wie dies Ihre Anforderung entsprechen würde:

{ 
    "rules": { 
    "b": { 
     "$key": { 
     ".read": "auth.uid == root.child('a').child($key).child('uid').val()", 
     ".write": "auth !== null" 
     } 
    } 
    } 
} 

In diesem Beispiel $key ist ein $location variable die b beliebige Taste unter der Liste der Knoten übereinstimmt.

Wir können dann diese $key Variable verwenden, die auf die current user's auth.uiduid des entsprechenden Knotens unter a, root.child() Verwendung anzupassen.

Das Ergebnis ist, dass dies nur der Zugriff gewährt hat, um ein Kind unter b lesen, wenn die uid des entsprechenden Kind mit dem gleichen Schlüssel unter a entspricht den aktuellen Benutzer uid.

Verwandte Themen