2013-01-23 3 views

Antwort

31

Es gibt keine explizite Unterstützung für „Gruppen“ in Firebase, weil man sie sich ganz einfach darstellen kann. Hier sind zwei Optionen, abhängig von Ihrer Situation.

Speichern von Gruppeninformationen in Firebase.

Die folgenden Daten verwendet werden könnten, 2 Gruppen darstellen kann ('alpha' und 'Beta') und 3 Teile von geschützten Daten ('thing1', 'thing2' und 'thing3')

{ 
    "groups": { 
    "alpha": { 
     "joe": true, 
     "sally": true 
    }, 
    "beta": { 
     "joe": true, 
     "fred": true 
    } 
    }, 
    "data": { 
    "thing1": { 
     "group": "alpha" 
     /* data accessible only by the "alpha" group */ 
    }, 
    "thing2": { 
     "group": "beta" 
     /* data accessible only by the "beta" group */ 
    }, 
    "thing3": { 
     "group": "alpha" 
     /* more data accessible by the "alpha" group */ 
    } 
    } 
} 

dann können wir die folgenden Regeln verwenden, um Sicherheit zu erzwingen:

{ 
    "rules": { 
    "data": { 
     "$thing": { 
     ".read": "root.child('groups').child(data.child('group').val()).hasChild(auth.id)", 
     ".write": "root.child('groups').child(data.child('group').val()).hasChild(auth.id)" 
     } 
    } 
    } 
} 

Also dann, wenn ich mit {id: ‚sally‘} authentifiziert bin als mein auth Objekt, werde ich haben Zugriff auf thing1 und thing3, aber nicht Sache2.

Speichern von Gruppeninformationen im Authentifizierungs-Token. Wenn Sie Ihre eigenen Authentifizierungs-Tokens generieren und Sie wissen, in welchen Gruppen sich ein Benutzer zum Zeitpunkt der Authentifizierung befindet, können Sie die Liste der Gruppen in dem von Ihnen generierten Authentifizierungs-Token speichern.

Wenn Sie zum Beispiel das Authentifizierungs-Token für den Benutzer 'fred' generieren, schließen Sie "{id: 'fred', Gruppen: {alpha: true, beta: true}}"

ein. Dann können Sie die Gruppenmitgliedschaft erzwingen mit:

+0

Michael, vielen Dank für Ihre schnelle Antwort, die erste Option war, was wir gesucht haben. – user1452215

+1

Was ist, wenn Sie den Zugriff auf Daten gewähren wollen. $ Ding für mehrere Gruppen (statt nur einer)? Gibt es etwas wie .hasAnyChild() oder ähnliches? – Pl4yeR

+0

Wohin genau geht das erste JSON-Objekt? Das definiert Gruppen, Alpha, Beta usw.? Ich denke nicht, dass du das in das Sicherheitsobjekt der eigentlichen Regeln einfügen kannst ... es sei denn, ich verpasse etwas? – Matt

Verwandte Themen