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.
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.
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
- Introduktion till RLS-policyer
- Testning och felsökning av RLS
- Rollbaserad åtkomst med RLS och anpassade claims