Supabase som Backend as a Service · Lektion

Rollbaserad åtkomst med RLS och anpassade claims

Bygg avancerade Row-Level Security-policyer som ger olika åtkomst beroende på användarroll med hjälp av JWT claims och hjälpfunktioner.

Lektion 3 av 313 steg

Rollbaserad åtkomst med RLS och anpassade claims är en gratis lektion i Supabase som Backend as a Service på CoddyKit. Detta är lektion 3 av 3. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Supabase som Backend as a Service, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Supabase som Backend as a Service innehåller totalt 3 lektioner.

Bortom ägarbaserade policyer

Grundläggande RLS kontrollerar ofta auth.uid() för ägarskap. Riktiga appar behöver också rollbaserade regler, där administratörer exempelvis kan se allt och redaktörer mer än visare.

Var roller lagras

Du kan lagra roller i en kolumn i en profiltabell eller bädda in dem som custom claims i användarens JWT för snabba kontroller utan joins.

Läsa JWT i SQL

Supabase gör JWT tillgänglig via auth.jwt(). Du kan läsa custom claims från den.

-- returns the 'user_role' claim as text
select auth.jwt() ->> 'user_role';

En hjälpfunktion för roller

Omslut läsningen av claimen i en hjälpfunktion så att policyerna förblir lättlästa.

create or replace function current_role_name()
returns text
language sql stable
as 'select coalesce(auth.jwt() ->> ''user_role'', ''viewer'')';

Policy där administratörer ser allt

Ge administratörer obegränsad läsåtkomst medan andra begränsas.

create policy admin_read on documents
for select
using (current_role_name() = 'admin');

Kombinera ägarskap och roll

Policyer kan kombinera villkor med OR: en användare ser en rad om hen äger den ELLER är administratör.

create policy read_own_or_admin on documents
for select
using (
  owner_id = auth.uid()
  or current_role_name() = 'admin'
);

Separata policyer per åtgärd

Definiera separata policyer för SELECT, INSERT, UPDATE och DELETE så att varje åtgärd får rätt regel. Exempelvis kan redaktörer uppdatera, medan visare inte kan det.

Modellera en rollhierarki

Mappa roller till behörighetsnivåer så att du kan jämföra dem numeriskt.

function level(role) {
  return { viewer: 1, editor: 2, admin: 3 }[role] || 0;
}
console.log(level('editor') >= level('viewer'));

Ange custom claims

Custom claims läggs till i JWT via en auth-hook eller av en betrodd server med admin-API:t. Låt aldrig klienter ange sin egen roll.

Säkerhetspåminnelser

Se alltid till att RLS är aktiverat på tabellen. Hjälpfunktioner bör vara stable, och rollogik får aldrig lita direkt på värden som klienten skickar.

Sätta ihop allt

Kombinera ägarskapskontroller med rollclaims från JWT för att uttrycka omfattande och säkra åtkomstregler helt i databasen.

Snabbtest

Testa dina kunskaper om rollbaserad RLS.

Sammanfattning

Du har byggt rollbaserad RLS med custom claims från auth.jwt(), hjälpfunktioner, policyer som kombinerar ägarskap eller roll samt separata regler per åtgärd. Du har också lärt dig att endast ange roller på en betrodd server.

Gratis att börja

Lär dig Supabase som Backend as a Service 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
40

Vanliga frågor

Är lektionen ”Rollbaserad åtkomst med RLS och anpassade claims” gratis?

Ja – hela texten till ”Rollbaserad åtkomst med RLS och anpassade claims” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Supabase som Backend as a Service, kan Ni uppgradera till CoddyKit PRO. Kursen i Supabase som Backend as a Service innehåller totalt 3 lektioner.

Vad lär jag mig i ”Rollbaserad åtkomst med RLS och anpassade claims”?

Bygg avancerade Row-Level Security-policyer som ger olika åtkomst beroende på användarroll med hjälp av JWT claims och hjälpfunktioner. Ni övar på Supabase som Backend as a Service 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 Supabase som Backend as a Service?

Du behöver inga förkunskaper. Utbildningen i Supabase som Backend as a Service 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 3 av 3.

Hur lång tid tar lektionen ”Rollbaserad åtkomst med RLS och anpassade claims”?

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 Supabase som Backend as a Service-lektionen?

Ja. Varje Supabase som Backend as a Service-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. Introduktion till RLS-policyer
  2. Testning och felsökning av RLS
  3. Rollbaserad åtkomst med RLS och anpassade claims
← Tillbaka till Supabase som Backend as a Service