Este artículo se basa en la investigación del código fuente (rama
1.x). Todavía no existe documentación oficial y es un paquete previo al lanzamiento (a fecha de abril de 2026).¿Qué es Sentinel?
Laravel Sentinel es un paquete de middleware de seguridad que controla el acceso a las rutas mediante drivers. Está desarrollado por Taylor Otwell y Mior Muhammad Zaki, y es compatible con PHP ^8.0 / Laravel 8–13. Su uso principal es proteger rutas de herramientas de administración como Telescope, Horizon o Pulse. Basta con aplicarSentinelMiddleware a la ruta para controlar el acceso con la lógica de autorización definida por el driver.
Comparación con los métodos tradicionales
Telescope y Horizon disponían cada uno de mecanismos de autorización basados engate.
Instalación
composer.json, dentro de extra.laravel.providers, está registrado el SentinelServiceProvider, el service provider se detecta automáticamente. No hace falta publicar archivos de configuración adicionales.
Arquitectura del paquete
Comportamiento del driver por defecto (driver Laravel)
El driverLaravel por defecto controla el acceso solo en el entorno local (APP_ENV=local).
Detección de IP privada
isPrivateIp() de la clase base Driver usa IpUtils de Symfony y considera privadas las siguientes rangos.
| Rango | Descripción |
|---|---|
127.0.0.0/8 | Loopback (RFC1700) |
10.0.0.0/8 | Privado (RFC1918) |
192.168.0.0/16 | Privado (RFC1918) |
172.16.0.0/12 | Privado (RFC1918) |
169.254.0.0/16 | Link-local (RFC3927) |
::1/128 | Loopback IPv6 |
fc00::/7 | Unique local IPv6 |
fe80::/10 | Link-local IPv6 |
Detección del entorno Docker local
REMOTE_ADDR es 127.0.0.1 y existe el archivo .dockerenv en la raíz del proyecto, se considera entorno Docker local.
Uso como middleware
Uso básico
Especificar el driver
Puedes pasar el nombre del driver como argumento del middleware. Si pasas un nombre de driver que no existe, cae al driver por defecto (comportamiento dedriverOrFallback()).
Implementación del middleware
authorize() devuelve false, se interrumpe con HTTP 401. Usando Driver::authorizeOrFail() también se puede lanzar AuthorizationException (el middleware en sí no lo usa).
Crear un driver personalizado
Puedes crear un driver personalizado heredando la clase abstractaDriver e implementando el método authorize().
extend() se hace en AppServiceProvider::boot(), por ejemplo.
Aprovechar los métodos utilitarios de la clase base
La claseDriver ofrece métodos útiles como la detección de IP, que se pueden usar libremente desde un driver personalizado.
Cómo funciona SentinelManager
SentinelManager hereda de Illuminate\Support\Manager. Manager es la clase base de Laravel para implementar el patrón driver, que resuelve la instancia con driver() cacheándola.
driverOrFallback() cae silenciosamente al driver por defecto aunque no se encuentre el driver indicado, por lo que pasar al middleware un nombre de driver inexistente no produce error.
SentinelManager se registra como singleton con scope (scoped) desde el SentinelServiceProvider, por lo que la instancia del driver se reutiliza dentro de una misma petición.
Conclusión
laravel/sentinel es un paquete pequeño, pero con alta extensibilidad gracias al patrón driver basado en Illuminate\Support\Manager.
| Elemento | Contenido |
|---|---|
| Versión | 1.x |
| PHP compatible | ^8.0 |
| Laravel compatible | 8–13 |
| Driver por defecto | Solo controla en entorno local |
| Driver personalizado | Se añade con Sentinel::extend() |
Laravel por defecto se especializa en prevenir accesos vía servicios de tunneling durante el desarrollo local, y para proteger producción hay que crear un driver personalizado propio. Cuando se publique la documentación oficial, se aclararán patrones de uso más concretos.
Repositorio laravel/sentinel
Puedes ver el código fuente y los cambios más recientes en la rama
1.x de GitHub.