Suche…


So speichern Sie Benutzerprofildaten

Jeder authentifizierte Benutzer verfügt über eine Firebase- uid , die für alle Anbieter eindeutig ist und im Ergebnis jeder Authentifizierungsmethode zurückgegeben wird.

Eine gute Möglichkeit, die Daten Ihres Benutzers zu speichern, ist das Erstellen eines Knotens, um alle Daten des Benutzers zu speichern und mithilfe Ihrer Sicherheitsregeln zu schützen

- Datenbank

{
   "users": {
      "uid1" : {
         "name": "Steve",
         "surname": "Jobs"
      },
      "uid2" : {
         "name": "Bill",
         "surname": "Gates"
      }
   }
}

- Sicherheit

{
    "rules": {
        "users": {
            "$uid": {
                // If node's key matches the id of the auth user
                ".write": "$uid == auth.uid"
            }
        }
    }
}

Die $uid in den obigen Regeln ist eine sogenannte "Dollar-Variable", die sicherstellt, dass die Regeln unter allen Knoten auf alle untergeordneten Knoten von users angewendet users . Weitere Informationen finden Sie in der Dokumentation zur Verwendung von $ -Variablen zum Erfassen von Pfadsegmenten .

Warum Benutzerdaten in der Datenbank speichern?

Mit der Firebase-Authentifizierung können sich Benutzer Ihrer App bei sozialen Anbietern oder deren E-Mail-Adresse + Kennwort anmelden. Was aber, wenn Sie zusätzliche Informationen über einen Benutzer speichern möchten, die über die Firebase-Authentifizierung hinausgehen können?

Oder was ist, wenn Sie eine Liste der Benutzer in Ihrer App anzeigen möchten? Die Firebase-Authentifizierung hat dafür keine API.

Die meisten Entwickler lösen dieses Problem, indem sie die zusätzlichen Informationen in einer separaten Datenbank speichern. In diesem Thema wird beschrieben, wie Sie solche Informationen in der Firebase-Echtzeitdatenbank speichern.

Umgang mit Benutzerkontendaten in der Echtzeitdatenbank

Das Firebase-Authentifizierungssystem ist die Quelle für die Benutzer- uid , displayName , photoURL und möglicherweise email . Kennwortbasierte Konten legen diese persistenten Werte im .updateProfile über die Methode .updateProfile . Das Speichern dieser Werte in der Echtzeitdatenbank (rDB, users wirft das Problem veralteter Daten auf. Anzeigenamen können sich beispielsweise ändern. Um diese Werte synchron zu halten, verwenden Sie den lokalen Speicher gemeinsam mit .onAuthStateChange .

auf jeder .onAuthStateChange

  • getItem('displayName') und getItem('photoURL')
  • Vergleiche mit user.displayName und user.photoURL
  • wenn anders
    • setItem('displayName') und setItem('photoURL')
    • db.ref.child('users').update die Werte von " displayName und / oder " photoURL

.onAuthStateChange wird bei jedem Laden oder Neuladen einer Seite sowie bei jeder Änderung des Auth-Status .onAuthStateChange . Es wird möglicherweise häufig ausgelöst, z. B. mehrseitige Apps. Das Lesen und Schreiben in den lokalen Speicher ist jedoch synchron und sehr schnell, sodass die App-Leistung nicht spürbar beeinträchtigt wird.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow