Skip to main content
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 aplicar SentinelMiddleware 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 en gate.
Este método dependía del estado de autenticación del usuario, y tenía el problema de “no se puede juzgar si no se ha iniciado sesión”. Como Sentinel actúa como middleware, puede controlar el acceso por petición independientemente de si hay autenticación o no. Además, permite definir las reglas en un único lugar para múltiples herramientas de administración.

Instalación

Como en 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 driver Laravel por defecto controla el acceso solo en el entorno local (APP_ENV=local).
Resumen del flujo:
El driver Laravel devuelve siempre true (permite) fuera del entorno local. Si necesitas control de acceso en producción, crea un driver personalizado.

Detección de IP privada

isPrivateIp() de la clase base Driver usa IpUtils de Symfony y considera privadas las siguientes rangos.

Detección del entorno Docker local

Cuando 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 de driverOrFallback()).

Implementación del middleware

Si 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 abstracta Driver e implementando el método authorize().
El registro con extend() se hace en AppServiceProvider::boot(), por ejemplo.

Aprovechar los métodos utilitarios de la clase base

La clase Driver 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. El driver 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.
Última modificación el 13 de julio de 2026