Als je een API bouwt met Laravel, kom je onvermijdelijk op de vraag: gebruik ik Sanctum of Passport? Beide packages regelen authenticatie, maar voor heel verschillende use cases. We leggen het verschil uit aan de hand van concrete situaties.
Laravel Sanctum: lichtgewicht en snel
Sanctum is de standaardkeuze voor de meeste Laravel-projecten. Het ondersteunt twee flows: token-based authenticatie voor mobiele apps of standalone API-clients, en cookie-based authenticatie voor SPA’s (single-page applications op hetzelfde domein).
Installatie is eenvoudig:
composer require laravel/sanctum
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
php artisan migrate
Tokens aanmaken:
$token = $user->createToken('app-token')->plainTextToken;
Sanctum is ideaal als je een eigen frontend hebt (Vue, React, Inertia) of een mobiele app die communiceert met jouw Laravel-backend.
Laravel Passport: OAuth2 voor externe partijen
Passport implementeert een volledige OAuth2-server. Je hebt het nodig als:
- Externe partijen toegang moeten krijgen tot jouw API via een gestandaardiseerd OAuth-flow
- Je
authorization_codegrants,client_credentialsofimplicitgrants nodig hebt - Je een platform bouwt waar derde partijen namens gebruikers kunnen handelen
Passport is complexer om op te zetten maar geeft je een productie-klare OAuth2-server.
Wanneer wat kiezen?
| Situatie | Kies |
|---|---|
| Eigen frontend (React/Vue/Inertia) | Sanctum (cookie) |
| Mobiele app | Sanctum (token) |
| Public API voor derden | Passport |
| Eenvoudige machine-to-machine | Sanctum (token) |
| OAuth2 authorization code flow | Passport |
Veelgemaakte fout: Passport waar Sanctum volstaat
Veel developers grijpen automatisch naar Passport omdat het “professioneler” klinkt. Maar voor de meeste projecten is Sanctum meer dan genoeg — en een stuk eenvoudiger te onderhouden.
Conclusie
Voor nieuwe projecten beginnen we standaard met Sanctum. Heb je een maatwerk applicatie nodig met een externe API of OAuth2-integraties? Dan kijken we of Passport de juiste keuze is. Neem contact op via onze Laravel ontwikkeling pagina voor meer info.