2017-10-12 1 views
0

Nachdem ich viele Tutorials und StackOverflow-Fragen gelesen hatte, konnte ich immer noch nicht herausfinden, wie es geht. Alle Tutorials beginnen mit folgenden Regel:Firebase-Regel, die neuen Benutzereinschluss und benutzerspezifische Pfadberechtigungen erlaubt

"users":{ 
    "$uid":{ 
     ".read": "$uid === auth.uid", 
     ".write": "$uid === auth.uid" 
    } 
} 

Aber wie einem neuen Benutzer in dem Benutzer-Knoten zu ermöglichen, wenn ein neuer Benutzer anmelden und die Lese halten und benutzerspezifischen Pfad schreiben (Auth! = Null) Privilegien?

Mit anderen Worten: Gibt es eine Möglichkeit, einen neuen Benutzer nach der Anmeldung in den Benutzerknoten einzufügen, und ihn gleichzeitig zu beschränken, nur auf seinen eigenen Knoten zu lesen und zu schreiben?

Eine andere Frage. Ich habe eine Schreibregel in einem anderen Knoten mit newData.exists(). Wenn ich im Simulator versuche, Nulldaten auf den Knoten zu schreiben, leugnet er dies wie erwartet, aber ich kann Null auf ein Kind dieses Knotens schreiben. Sollte der Knoten keine Regelkaskade auf seine Kinder schreiben?

+0

Können Sie Ihre zweite Frage näher ausführen oder ein Beispiel geben? – Grimthorr

+0

Niemals in der Mitte, sorry. Es funktionierte nicht wegen einer anderen Regel, die ich mir zusammengetan hatte. –

Antwort

0

Die obigen Regeln entsprechen $uid bis auth.uid. Wenn zum Beispiel die UID eines Benutzers cKzMyjImSBX6ybzeCCCjf0qbTym1 lautet, können sie nur & in Ihrer Datenbank lesen, unabhängig davon, ob dieser Schlüssel momentan existiert oder nicht (wenn es nicht existiert, wenn es geschrieben wird, wird es sein erstellt).

Vom Firebase documentation on rules:

Sobald ein Benutzer authentifiziert, wird die Auth Variable in der Datenbank Firebase Regeln Regeln mit den Informationen des Benutzers aufgefüllt werden. Diese Informationen enthält ihre eindeutige Kennung (uid) sowie verknüpfte Account-Daten, wie eine Facebook-ID oder eine E-Mail-Adresse, und andere Informationen.

+0

Ok, endlich habe ich verstanden, die Regeln beziehen sich auf die Daten nicht auf die Schlüssel. Daher muss ich mich nicht um die Erstellung des Benutzerschlüssels (id) kümmern, sondern hauptsächlich um den Zugriff (Lesen und Schreiben) auf alle unter dem Schlüssel gespeicherten Informationen. Danke Grimthorr, dass du mich in die Richtung zeigst. –

+0

Ich verlasse grundsätzlich meine Regeln wie im obigen Beispiel und kann aus der Datenbank schreiben und lesen, wie ich es wollte. –

Verwandte Themen