Zoeken…


Hoe gebruikersprofielgegevens op te slaan

Elke geverifieerde gebruiker heeft een Firebase- uid die uniek is voor alle providers en wordt geretourneerd in het resultaat van elke authenticatiemethode.

Een goede manier om de gegevens van uw gebruiker op te slaan, is om een knooppunt te maken om alle gegevens van de gebruikers te bewaren en te beschermen met behulp van uw beveiligingsregels

- Gegevensbestand

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

- Veiligheid

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

De $uid in de bovenstaande regels is een zogenaamde "dollarvariabele", die ervoor zorgt dat de regels eronder worden toegepast op alle onderliggende knooppunten van users . Zie de documentatie over $ Variabelen gebruiken om padsegmenten vast te leggen voor meer informatie.

Waarom gebruikersgegevens opslaan in de database

Met Firebase-verificatie kunnen de gebruikers van uw app zich aanmelden bij sociale providers of hun e-mailadres + wachtwoord. Maar wat als u aanvullende informatie over een gebruiker wilt opslaan, naast wat u met Firebase-verificatie kunt opgeven?

Of wat als u een lijst met gebruikers in uw app wilt weergeven? Firebase-authenticatie heeft hiervoor geen API.

De meeste ontwikkelaars lossen dit probleem op door de aanvullende informatie in een aparte database op te slaan. In dit onderwerp wordt beschreven hoe u dergelijke informatie opslaat in de Firebase Realtime-database .

Omgaan met gebruikersaccountgegevens in de Realtime-database

Het Firebase auth-systeem is de bron van een gebruikers uid , displayName , photoURL , en misschien email . Op wachtwoord gebaseerde accounts stellen deze persistente waarden in het verificatiesysteem in via de .updateProfile methode. Door deze waarden op te slaan in de Realtime Database, rDB, vormt het users het probleem van verouderde gegevens. Weergavenamen kunnen bijvoorbeeld veranderen. Om deze waarden synchroon te houden, gebruikt u lokale opslag in samenwerking met .onAuthStateChange .

op elke .onAuthStateChange

  • getItem('displayName') en getItem('photoURL')
  • vergelijk met user.displayName en user.photoURL
  • indien verschillend
    • setItem('displayName') en setItem('photoURL')
    • db.ref.child('users').update de waarden van displayName en / of photoURL

.onAuthStateChange bij elke pagina die wordt geladen of opnieuw wordt geladen, evenals bij elke wijziging van de verificatiestatus. Mogelijk wordt er vaak geschoten, bijvoorbeeld apps met meerdere pagina's. Lezen en schrijven naar lokale opslag is echter synchroon en erg snel, dus er is geen merkbare invloed op de prestaties van de app.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow