Applikationer med Firebase Auth och Realtime Database · Lektion

Användarbaserad åtkomstkontroll

Implementera regler som beviljar eller nekar läs- och skrivåtkomst baserat på autentiserade användar-ID:n och roller

Lektion 2 av 411 steg

Användarbaserad åtkomstkontroll är en gratis lektion i Applikationer med Firebase Auth och Realtime Database på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Applikationer med Firebase Auth och Realtime Database, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Applikationer med Firebase Auth och Realtime Database innehåller totalt 4 lektioner.

Styr åtkomst per användare

Välkommen till den här lektionen! I säkra applikationer är det viktigt att kontrollera vem som får åtkomst till vilka data. Detta kallas användarbaserad åtkomstkontroll.

Med Firebase Realtime Database Security Rules kan ni definiera exakta behörigheter baserat på den användare som för närvarande är inloggad.

Möt variabeln 'auth'

I era säkerhetsregler tillhandahåller Firebase en särskild variabel, auth. Den här variabeln innehåller information om den aktuellt autentiserade användaren.

  • auth.uid: Det unika ID:t för den inloggade användaren.
  • auth.token: Ett objekt som innehåller anpassade claims och annan tokeninformation (till exempel e-postadress).

Om ingen användare är inloggad är auth null.

Endast autentiserade användare

Den enklaste formen av användarbaserad åtkomst är att säkerställa att endast autentiserade användare kan läsa eller skriva data.

Det kan ni göra genom att kontrollera att variabeln auth inte är null.

{
  "rules": {
    ".read": "auth != null",
    ".write": "auth != null"
  }
}

Användare läser sina egna data

Ofta vill ni att användare endast ska kunna läsa data som tillhör dem. Föreställ er en /users-nod där varje användare har en undernod med sitt UID.

Ni kan använda en jokerteckenvariabel ($uid) i sökvägen för att matcha den aktuella användarens ID.

{
  "rules": {
    "users": {
      "$uid": {
        ".read": "auth.uid == $uid"
      }
    }
  }
}

Användare skriver sina egna data

På samma sätt kan ni begränsa skrivåtkomsten så att användare endast kan ändra sina egna data. Det förhindrar att en användare ändrar någon annans profil.

Regeln liknar läsregeln mycket, men tillämpas på .write.

{
  "rules": {
    "users": {
      "$uid": {
        ".write": "auth.uid == $uid"
      }
    }
  }
}

Läs och skriv till er egen profil

Låt oss kombinera läs- och skrivreglerna. Detta vanliga mönster ger användare full kontroll över sin egen specifika datanod och används ofta för användarprofiler.

Här är $userId en platshållare för en faktisk användares UID.

{
  "rules": {
    "profiles": {
      "$userId": {
        ".read": "auth.uid == $userId",
        ".write": "auth.uid == $userId"
      }
    }
  }
}

Exempel på ägarskap för inlägg

Föreställ er en sektion med ”posts” där alla kan läsa inlägg, men endast den som skapade ett inlägg kan redigera eller ta bort sitt eget inlägg.

Vi antar att varje inläggsobjekt har ett fält med namnet ownerId. Vi använder data.ownerId för att hänvisa till det befintliga ägar-ID:t i databasen.

{
  "rules": {
    "posts": {
      "$postId": {
        ".read": "true",
        ".write": "auth.uid == data.ownerId"
      }
    }
  }
}

Validera data med auth

Utöver att kontrollera vem som får skriva kan ni även validera vilka data som skrivs. Ni kan till exempel säkerställa att en användare anger sig själv som ägare när ett objekt skapas.

Variabeln newData hänvisar till de data som håller på att skrivas.

{
  "rules": {
    "items": {
      "$itemId": {
        ".write": "auth != null",
        ".validate": "newData.ownerId == auth.uid"
      }
    }
  }
}

Introduktion till användarroller

För mer komplex åtkomst kan ni definiera roller som ”admin” eller ”moderator”. Dessa roller lagras ofta som anpassade claims i användarens autentiseringstoken.

Därefter kan ni kontrollera dessa roller i era regler med hjälp av auth.token.

{
  "rules": {
    "adminContent": {
      ".read": "auth.token.isAdmin == true",
      ".write": "auth.token.isAdmin == true"
    }
  }
}

Snabb kontroll av åtkomst

Studera följande Realtime Database Security Rules:

{ "rules": { "messages": { "$messageId": { ".read": "auth.uid == data.senderId", ".write": "auth.uid == data.senderId" } } } }

Om användaren ”user123” är autentiserad och försöker läsa ett meddelande där data.senderId är ”user456”, lyckas det då?

Sammanfattning: regler för användaråtkomst

Ni har lärt er hur man implementerar kraftfull användarbaserad åtkomstkontroll i Firebase Realtime Database Security Rules!

  • Variabeln auth tillhandahåller information om den aktuella användaren.
  • Ni kan begränsa åtkomsten till autentiserade användare (auth != null).
  • Användare kan få läs- och skrivåtkomst till sina egna specifika data med hjälp av auth.uid == $uid.
  • Ni kan validera inkommande data med newData och auth.uid.
  • Roller kan användas för att ge åtkomst till specifika användargrupper.

Utforska härnäst hur själva data kan valideras!

Gratis att börja

Lär dig Applikationer med Firebase Auth och Realtime Database med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
11
Lektioner
44

Vanliga frågor

Är lektionen ”Användarbaserad åtkomstkontroll” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Applikationer med Firebase Auth och Realtime Database, inklusive ”Användarbaserad åtkomstkontroll”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Applikationer med Firebase Auth och Realtime Database innehåller totalt 4 lektioner.

Vad lär jag mig i ”Användarbaserad åtkomstkontroll”?

Implementera regler som beviljar eller nekar läs- och skrivåtkomst baserat på autentiserade användar-ID:n och roller Ni övar på Applikationer med Firebase Auth och Realtime Database med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Applikationer med Firebase Auth och Realtime Database?

Du behöver inga förkunskaper. Utbildningen i Applikationer med Firebase Auth och Realtime Database på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.

Hur lång tid tar lektionen ”Användarbaserad åtkomstkontroll”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Applikationer med Firebase Auth och Realtime Database-lektionen?

Ja. Varje Applikationer med Firebase Auth och Realtime Database-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Förstå syntaxen i säkerhetsregler
  2. Användarbaserad åtkomstkontroll
  3. Validera data med regler
  4. Testa och felsöka säkerhetsregler
← Tillbaka till Applikationer med Firebase Auth och Realtime Database