Skip to main content
Dit artikel is gebaseerd op onderzoek van de broncode (de branch 1.x). Officiële documentatie bestaat nog niet en de package is nog niet officieel uitgebracht (per april 2026).

Wat is Sentinel

Laravel Sentinel is een security-middleware-package die de toegang tot routes drivergebaseerd regelt. De package is ontwikkeld door Taylor Otwell en Mior Muhammad Zaki en ondersteunt PHP ^8.0 / Laravel 8 t/m 13. De belangrijkste toepassing is het beschermen van routes voor beheertools zoals Telescope, Horizon en Pulse. Door simpelweg de SentinelMiddleware op een route toe te passen, wordt de toegang gecontroleerd met de autorisatielogica die de driver definieert.

Vergelijking met de traditionele aanpak

Telescope en Horizon hadden elk een eigen autorisatiemechanisme op basis van een gate.
Deze aanpak is afhankelijk van de authenticatiestatus van de gebruiker, met als probleem dat er “zonder login geen oordeel mogelijk is”. Omdat Sentinel als middleware werkt, kan het de toegang per request regelen, ongeacht of er authenticatie is. Bovendien kun je op één plek regels definiëren voor meerdere beheertools.

Installatie

Omdat SentinelServiceProvider is geregistreerd in extra.laravel.providers van composer.json, wordt de serviceprovider automatisch gedetecteerd. Het publiceren van extra configuratiebestanden is niet nodig.

De architectuur van de package

Gedrag van de standaarddriver (de Laravel-driver)

De standaard Laravel-driver voert alleen in de lokale omgeving (APP_ENV=local) controles uit.
Samengevat ziet de flow er zo uit:
De Laravel-driver geeft buiten de local-omgeving altijd true (toestaan) terug. Heb je toegangscontrole in productie nodig, maak dan een custom driver.

Privé-IP’s herkennen

De methode isPrivateIp() van de basisklasse Driver gebruikt Symfony’s IpUtils en beschouwt de volgende IP-reeksen als privé-IP’s.

Een lokale Docker-omgeving detecteren

Als REMOTE_ADDR gelijk is aan 127.0.0.1 én er een .dockerenv-bestand in de projectroot bestaat, wordt dit als een lokale Docker-omgeving beschouwd.

Gebruiken als middleware

Basisgebruik

Een driver opgeven

Je kunt een drivernaam meegeven als middleware-argument. Geef je een niet-bestaande drivernaam op, dan valt de package terug op de standaarddriver (het gedrag van driverOrFallback()).

De implementatie van de middleware

Geeft authorize() false terug, dan wordt de request afgebroken met HTTP 401. Met Driver::authorizeOrFail() kun je ook een AuthorizationException laten gooien (de middleware zelf gebruikt die niet).

Een custom driver maken

Je maakt een custom driver door de abstracte klasse Driver te extenden en de methode authorize() te implementeren.
Registreer extend() bijvoorbeeld in AppServiceProvider::boot().

De utilitymethodes van de basisklasse benutten

De klasse Driver biedt handige methodes zoals IP-controles, die je vrij kunt gebruiken vanuit je custom driver.

Hoe SentinelManager werkt

SentinelManager extendt Illuminate\Support\Manager. Manager is de basisklasse van Laravel voor het implementeren van het driverpatroon; via driver() worden driverinstanties opgelost en gecachet.
Omdat driverOrFallback() stilletjes terugvalt op de standaarddriver wanneer de opgegeven driver niet wordt gevonden, levert een niet-bestaande drivernaam als middleware-argument geen fout op. SentinelManager wordt door de SentinelServiceProvider geregistreerd als scoped singleton (scoped), zodat de driverinstantie binnen één request wordt hergebruikt.

Samenvatting

laravel/sentinel is een kleine package, maar dankzij het driverpatroon op basis van Illuminate\Support\Manager is hij zeer goed uitbreidbaar. De standaard Laravel-driver is gespecialiseerd in het blokkeren van toegang via tunnelingdiensten tijdens lokale ontwikkeling; voor bescherming in productie moet je een eigen custom driver maken. Zodra de officiële documentatie er is, zullen concretere gebruikspatronen duidelijk worden.

laravel/sentinel repository

De broncode en de nieuwste wijzigingen vind je in de branch 1.x op GitHub.
Laatst gewijzigd op 6 september 2026