Skip to main content

Wat is Sanctum

Laravel Sanctum is een lichtgewicht authenticatiepakket voor SPA’s (single-page applications), mobiele apps en eenvoudige API’s. Zonder kennis van complexe OAuth kun je per gebruiker meerdere API-tokens uitgeven en beheren. Sanctum lost twee problemen op.
Roep je de API aan vanuit je eigen SPA, gebruik dan SPA-authenticatie. Gebruiken mobiele apps of derden je API, gebruik dan API-tokenauthenticatie. Je mag ook gerust maar één van beide gebruiken.

Sanctum of Passport?

Moet je als OAuth2-provider fungeren voor externe diensten, kies dan Passport; voor de meeste applicaties volstaat Sanctum.

Installatie en configuratie

Installatie

Sanctum wordt opgezet door simpelweg het Artisan-commando install:api uit te voeren.
Dit commando doet automatisch het volgende:
  • Installeren van het pakket laravel/sanctum
  • Publiceren van het migratiebestand voor de tabel personal_access_tokens
  • Uitvoeren van de migraties

De HasApiTokens-trait toevoegen

Voeg de trait HasApiTokens toe aan je User-model.
Hierna kun je methoden zoals $user->createToken() en $user->tokens gebruiken.

API-tokenauthenticatie

Tokenflow

Een token uitgeven

Met de methode createToken() geef je een token uit. Via de property plainTextToken haal je de tokenwaarde in platte tekst op. Het platte-teksttoken wordt niet in de database opgeslagen, dus je moet het direct na uitgifte aan de gebruiker teruggeven.
In de database wordt het token opgeslagen als een SHA-256-hash.

Scopes (abilities) instellen

Door abilities (scopes) aan een token toe te kennen, beperk je welke acties met dat token mogelijk zijn.
Tijdens het verwerken van een request controleer je de scopes van het token.

Scopes controleren met middleware

Registreer de middleware-aliassen in bootstrap/app.php.
Pas de middleware toe op je routes.

Geldigheidsduur van tokens

Standaard verlopen Sanctum-tokens niet. Met de optie expiration in config/sanctum.php stel je een geldigheidsduur in minuten in.
Je kunt ook per token een vervaldatum opgeven.
Heb je een geldigheidsduur ingesteld, plan dan het periodiek verwijderen van verlopen tokens in.

Tokens intrekken


SPA-authenticatie

SPA-authenticatie gebruikt een sessiecookie, dus je hoeft geen tokens uit te geven of te beheren. Het is geschikt wanneer je de API aanroept vanuit je eigen frontend (Vue, React, Next.js e.d.).
Om SPA-authenticatie te gebruiken moeten de SPA en de API hetzelfde top-level domein delen (subdomeinen mogen verschillen). Verder moeten requests de header Accept: application/json en een Referer- of Origin-header bevatten.

De Sanctum-middleware inschakelen

Schakel de middleware statefulApi() in via bootstrap/app.php.

First-party domeinen instellen

Stel het domein van je SPA in via de optie stateful in config/sanctum.php.

CORS configureren

Roep je de API aan vanaf een ander subdomein, dan is CORS-configuratie nodig.
Stel in config/cors.php de optie supports_credentials in op true.
Ook axios in de frontend moet worden geconfigureerd.
Vergeet ook de domeininstelling van de sessiecookie niet.

Authenticatieflow vanuit de SPA

1

Het CSRF-cookie ophalen

Roep vóór het inloggen het endpoint /sanctum/csrf-cookie aan om de CSRF-bescherming te initialiseren.
2

Het loginrequest versturen

Stuur een POST-request naar het /login-endpoint.
3

Geauthenticeerde requests versturen

Requests na het inloggen worden automatisch geauthenticeerd via het sessiecookie.

Geauthenticeerde routes beschermen

Pas de middleware auth:sanctum toe op een route en niet-geauthenticeerde requests krijgen een 401 Unauthorized terug. Deze ene middleware handelt zowel API-token- als SPA-authenticatie af.

Praktijkvoorbeeld: login-API met tokenuitgifte

Een voorbeeld van API-tokenauthenticatie voor een mobiele app.
1

Het login-endpoint maken

2

Geauthenticeerde routes maken

3

Requests versturen vanuit de client


Testen

Bij het testen van Sanctum gebruik je Sanctum::actingAs() om een gebruiker te authenticeren en de toe te kennen abilities op te geven.

Samenvatting

Voeg de trait HasApiTokens toe aan het User-model:
  • API-tokenauthenticatie: voor clients zonder sessie, zoals mobiele apps, derden en CLI-tools.
  • SPA-authenticatie: voor een SPA op hetzelfde domein (of subdomein), zoals je eigen Vue/React/Next.js-frontend. Veiliger en zonder tokenbeheer.
Laatst gewijzigd op 6 september 2026