Hoppa till innehåll
Fullstack & WebbSupabaseWebbutvecklingRLS13 min läsning

Supabase som backend för svenska SaaS: Auth, RLS, Edge Functions

Hur du bygger ett komplett, säkert SaaS-backend på Postgres utan att skriva ett eget API-lager.

21 januari 2026Uppdaterad 10:00
00
Supabase som backend för svenska SaaS: Auth, RLS, Edge Functions
Med RLS bor behörighetslogiken i databasen, inte utspridd i applikationskoden.Photo: Unsplash

Bygg ett komplett SaaS-backend med Supabase. Auth, RLS och Edge Functions.

För ett svenskt SaaS-bolag i tidig fas är frågan sällan vilken databas som är mäktigast, utan hur snabbt ni kan komma i produktion med något ni vågar lita på. Supabase är ofta mitt förstaval just där: det är Postgres i botten, men med autentisering, radnivå-säkerhet, fillagring och serverlösa funktioner inbyggt. Ni slipper bygga ett helt eget backend-lager innan ni ens har en betalande kund. Den här guiden går igenom de tre delar som avgör om bygget håller: Auth, Row Level Security och Edge Functions.

Auth: identitet som inte blir ett eget projekt

Supabase Auth ger inloggning med e-post, magiska länkar och sociala inloggningar utan att du behöver hantera lösenordshashning eller sessioner själv. Det viktiga för ett B2B-SaaS är att tidigt bestämma hur ni modellerar organisationer. En användare tillhör nästan alltid ett företag, ofta med en roll, och den kopplingen måste finnas i datamodellen från dag ett. Att lägga till multitenancy i efterhand är ett av de dyraste omtagen jag ser.

Varje inloggad användare får ett JWT som bär med sig sitt user-id. Den token är hela grunden för säkerhetsmodellen vi bygger härnäst.

Row Level Security är där säkerheten faktiskt bor

Det här är Supabases starkaste och samtidigt farligaste egenskap. Med RLS flyttar du behörighetsreglerna in i databasen: en policy avgör vilka rader en viss användare får läsa eller ändra. Rätt använt betyder det att även om någon kommer åt din databasnyckel kan de bara se sin egen organisations data. Fel använt - eller bortglömt - betyder det att alla kan se allt.

Min hårda regel: aktivera RLS på varje tabell direkt när den skapas, även innan policys finns. En tabell utan RLS men exponerad mot klienten är en öppen dörr. Skriv sedan policys som utgår från company_id kopplat till den inloggade användaren, och testa dem genom att faktiskt logga in som två olika kunder och försöka nå varandras data. Det är detaljarbetet i RLS som jag oftast bygger tillsammans med kunder inom webbutveckling.

Edge Functions för logik som inte hör hemma i klienten

Det mesta kan ske direkt mot databasen via klientbiblioteket, skyddat av RLS. Men en del får aldrig ligga i klienten: anrop mot Stripe med hemliga nycklar, webhooks från externa tjänster, e-postutskick, eller tunga beräkningar. Det är där Edge Functions kommer in - serverlösa funktioner som körs nära användaren och har tillgång till dina hemligheter på ett säkert sätt.

Ett typiskt mönster: en Edge Function tar emot Stripes webhook när en betalning lyckas, verifierar signaturen, och uppdaterar prenumerationsstatusen i databasen med en behörighet som klienten aldrig ser. Klienten läser sedan bara resultatet via RLS-skyddade tabeller.

Realtime och fillagring - använd det ni behöver

Supabase kan strömma databasändringar i realtid till klienten, vilket är guld för aviseringar och samarbetsfunktioner men onödig komplexitet för en enkel CRUD-app. Samma sak med Storage för filer: utmärkt när ni behöver det, men koppla på det när behovet finns, inte för att det går. Den disciplinen håller arkitekturen begriplig.

När Supabase inte är rätt val

Jag ska vara ärlig: Supabase passar inte allt. Om ni har extrema krav på databasprestanda, behöver finmaskig kontroll över Postgres-konfigurationen, eller redan har en stark plattform i en annan molnleverantör, kan en mer renodlad lösning vara bättre. Och RLS är kraftfullt men har en inlärningskurva - underskatta den inte. För de flesta tidiga och medelstora svenska SaaS-bolag väger fördelarna ändå tungt, vilket jag visar i konkreta uppdrag i kundcase.

Relaterat

Vill du ta det vidare?

Jag bygger SaaS-backend på Supabase för svenska bolag - med RLS-policys som faktiskt testas och en datamodell som tål att växa. Boka ett samtal så går vi igenom ert use case.

Aktivera RLS på varje tabell redan när den skapas. En tabell utan radnivå-säkerhet men exponerad mot klienten är en öppen dörr.

- Simon Axelsson

Vanliga frågor

Är Row Level Security tillräckligt för att skydda mitt SaaS?
RLS är en mycket stark grund eftersom behörigheten lever i databasen och gäller oavsett hur datan nås. Men den skyddar bara det du faktiskt skrivit policys för. Aktivera RLS på alla tabeller, skriv policys per tenant och verifiera dem genom att logga in som olika kunder och försöka nå varandras data.
Kan vi flytta från Supabase senare om vi växer ur det?
Ja, eftersom det är vanlig Postgres i botten är databasen i sig portabel. Det som binder är Auth och Edge Functions. Håll affärslogiken så fristående från leverantörsspecifika delar som möjligt, så blir en framtida flytt en hanterbar uppgift snarare än ett omtag.
När bör vi välja Edge Functions framför direkta databasanrop?
När logiken kräver hemligheter eller inte får ske i klienten - betalningar, webhooks, e-post och tunga beräkningar. Allt som bara läser eller skriver data en användare får röra kan oftast ske direkt mot databasen skyddat av RLS.
Simon Axelsson
Simon AxelssonIT-konsult & teknisk rådgivare

Simon Axelsson är senior IT-konsult och grundare av SIAX Technology AB. Han hjälper nordiska företag med molninfrastruktur, dataplattformar och AI-automation.

Fler artiklar