Vad är RLS?

Regeln som räddar dig från att läcka data.

7 minLovable – bygg utan att koda
Illustration för lektionen Vad är RLS?

Vad du bygger

Du bygger en säkerhetsspärr för din databas med Row Level Security (RLS). Genom att låsa databasens tabeller ser du till att inloggade användare bara kan se och ändra sin egen data, medan obehöriga stängs ute. Slutresultatet är en app där all personlig information är helt skyddad bakom ett digitalt lås.

Innan du börjar

  • Ett påbörjat app-projekt i Lovable där du har en databastabell, till exempel en todo-lista.
  • En koppling till databastjänsten Supabase.
  • Grundläggande koll på hur inloggning fungerar i din app.

Steg för steg

  1. Öppna chattpanelen — Gå till ditt projekt i Lovable och leta upp chatten på höger sida av skärmen.

  2. Be AI:n om RLS-regler — Skriv ett meddelande i chatten där du ber Lovable att säkra din specifika tabell (i det här exemplet använder vi tabellen "todos").

    Aktivera RLS på tabellen "todos". Skapa policies så att endast inloggade användare kan läsa, skapa, ändra och radera sina egna rader.

  3. Godkänn ändringen — Lovable kommer nu att generera den kod som krävs för att prata med din databas. Granska förslaget och klicka på knappen för att godkänna och köra ändringen (migrationen).

  4. Kontrollera i Supabase — Logga in på ditt Supabase-konto, klicka på Table Editor i vänstermenyn och välj din tabell. Högst upp till höger ska det nu lysa en grön markering där det står "RLS Enabled".

  5. Testa med Användare A — Starta din app i förhandsgranskningen. Registrera ett nytt testkonto, logga in och skapa ett par rader i din todo-lista. Logga sedan ut igen.

  6. Testa med Användare B — Skapa ytterligare ett testkonto med en annan e-postadress och logga in. Kontrollera att din todo-lista är helt tom. Du ska inte kunna se ett enda spår av informationen som du nyss skapade med det första kontot.

Byggloftets tips

  • Bygge påminner: En databas utan RLS är som ett olåst kassaskåp mitt på torget. Gör det till en vana att alltid aktivera RLS på varje ny tabell du skapar.
  • Använd inkognitofönster vid test — Öppna appen i ett vanligt fönster och ett inkognitofönster samtidigt. Då kan du vara inloggad som två olika användare samtidigt och direkt se att RLS-skyddet fungerar.
  • Tänk på publika tabeller — Om du bygger något som alla ska kunna läsa (som blogginlägg eller produkter i en webbshop), ska du fortfarande ha RLS aktiverat. Men då skapar du en regel (policy) för SELECT som tillåter anonyma användare att läsa, medan bara administratörer får ändra.

Vanliga fel

  • "RLS är på men listan är helt tom för alla": Du har troligen glömt att skapa regler (policies). När RLS slås på låses allt. Om inga tillåtande regler finns kan ingen läsa något alls. Be Lovable lägga till standardregler för inloggade användare.
  • "En användare kan fortfarande redigera andras rader": Dubbelkolla att din regel för UPDATE eller DELETE faktiskt använder kopplingen auth.uid() = user_id. Om detta saknas kan inloggade användare ändra på data som tillhör andra.
  • "Ingenting visas på mina publika sidor": Om du har en sida som ska synas utan att man loggar in, men tabellen har RLS, har du glömt att ge tillgång till anonyma användare. Be Lovable att lägga till en öppen läsrättighet (SELECT) för herrelösa eller anonyma besökare.

Du är klar när…

Du har loggat in med två helt olika testkonton i din app och bekräftat att de bara kan se och ändra sina egna personliga rader i databasen.

Steg för steg i bild

I chatten:
1. I chatten:
Godkänn migrationen.
2. Godkänn migrationen.
Testa
3. Testa

Det finns en videoversion av den här lektionen för medlemmar. Texten ovan är komplett.