API-beveiliging is geen afterthought. Of je nu een mobiele app koppelt of een SPA bouwt, je authenticatielaag moet solide zijn. Laravel Sanctum biedt een lichtgewicht maar krachtige oplossing.
Wat is Laravel Sanctum?
Sanctum is Laravel’s officiële authenticatiepakket voor twee use cases:
- API token authenticatie: voor mobiele apps en third-party API-consumers
- SPA authenticatie: voor first-party JavaScript-frontends via cookies
Het is eenvoudiger dan Passport (geen OAuth2 overhead) maar krachtiger dan een zelfgebouwde tokenoplossing.
Token authenticatie voor APIs
Genereer persoonlijke access tokens voor gebruikers:
$token = $user->createToken('mobile-app')->plainTextToken;
De client stuurt dit token als Bearer token mee:
Authorization: Bearer 1|abc123...
Je beschermt routes met de sanctum middleware:
Route::middleware('auth:sanctum')->group(function () {
Route::get('/user', fn() => auth()->user());
});
Token abilities
Beperk wat een token kan doen:
$token = $user->createToken('read-only', ['read:orders'])->plainTextToken;
Controleer in je controller:
if ($request->user()->tokenCan('write:orders')) { ... }
SPA authenticatie
Voor een Laravel + Vue/React combinatie gebruik je cookie-gebaseerde authenticatie. Na login via /sanctum/csrf-cookie en /login is de gebruiker geauthenticeerd via een session cookie. Veiliger dan tokens voor browser-applicaties.
Productie best practices
- Gebruik HTTPS — altijd
- Stel tokenvervaldatum in:
createToken('name', expiresAt: now()->addDays(30)) - Verwijder tokens bij logout
- Beperk token abilities tot wat nodig is
- Monitor actieve tokens via het dashboard
Integratie met API-koppelingen
Bij Meesy gebruiken we Sanctum standaard voor API integratie en maatwerk applicaties met externe clients. De eenvoud en betrouwbaarheid zijn ongeklopt in het Laravel-ecosysteem.
Conclusie
Sanctum is de juiste keuze voor de meeste Laravel API-projecten. Correct geconfigureerd biedt het robuuste beveiliging zonder de complexiteit van OAuth2. Wil je een veilige API laten bouwen? Neem contact op met Meesy.