Questo articolo si basa sull’indagine del codice sorgente (branch
1.x). Non esiste ancora documentazione ufficiale e il pacchetto è precedente al rilascio ufficiale (dato di aprile 2026).Cos’è Sentinel
Laravel Sentinel è un pacchetto di middleware di sicurezza che controlla l’accesso alle rotte tramite driver. È sviluppato da Taylor Otwell e Mior Muhammad Zaki ed è compatibile con PHP ^8.0 e Laravel da 8 a 13. Il suo utilizzo principale è la protezione delle rotte degli strumenti di gestione come Telescope, Horizon e Pulse. Basta applicareSentinelMiddleware alla rotta per controllare l’accesso con la logica di autorizzazione definita dal driver.
Confronto con il metodo tradizionale
Telescope e Horizon avevano ciascuno un proprio meccanismo di autorizzazione basato sugate.
Installazione
SentinelServiceProvider è registrato in extra.laravel.providers di composer.json, il service provider viene rilevato automaticamente. Non serve pubblicare file di configurazione aggiuntivi.
Architettura del pacchetto
Comportamento del driver predefinito (driver Laravel)
Il driver predefinitoLaravel controlla solo nell’ambiente locale (APP_ENV=local).
Determinazione dell’IP privato
isPrivateIp() nella classe base Driver usa IpUtils di Symfony e considera privati i seguenti range di IP.
| Range | Descrizione |
|---|---|
127.0.0.0/8 | Loopback (RFC1700) |
10.0.0.0/8 | Privato (RFC1918) |
192.168.0.0/16 | Privato (RFC1918) |
172.16.0.0/12 | Privato (RFC1918) |
169.254.0.0/16 | Link-local (RFC3927) |
::1/128 | Loopback IPv6 |
fc00::/7 | Unique local IPv6 |
fe80::/10 | Link-local IPv6 |
Rilevamento di ambiente Docker locale
REMOTE_ADDR è 127.0.0.1 ed esiste il file .dockerenv nella root del progetto.
Uso come middleware
Uso di base
Specificare un driver
Puoi passare al middleware il nome di un driver come argomento. Se passi un nome di driver inesistente, si ricade sul driver predefinito (comportamento didriverOrFallback()).
Implementazione del middleware
authorize() restituisce false, il middleware interrompe con HTTP 401. Con Driver::authorizeOrFail() puoi anche lanciare AuthorizationException (il middleware in sé non lo usa).
Creazione di un driver personalizzato
Puoi creare un driver personalizzato estendendo la classe astrattaDriver e implementando authorize().
extend() va fatta in AppServiceProvider::boot() o simili.
Sfruttare i metodi utility della classe base
La classeDriver mette a disposizione utili metodi per la determinazione dell’IP, che puoi usare liberamente dai driver personalizzati.
Come funziona SentinelManager
SentinelManager estende Illuminate\Support\Manager. Manager è la classe base di Laravel per implementare il pattern driver e risolve le istanze del driver mantenendole in cache tramite driver().
driverOrFallback() ricade silenziosamente sul driver predefinito anche se il driver specificato non è trovato, per cui non genera errori se al middleware passi un nome di driver inesistente.
SentinelManager viene registrato come singleton con scope (scoped) dal SentinelServiceProvider, quindi l’istanza del driver viene riutilizzata all’interno di una singola richiesta.
Conclusioni
laravel/sentinel è un pacchetto piccolo ma, grazie al pattern driver basato su Illuminate\Support\Manager, ha un’alta estendibilità.
| Elemento | Contenuto |
|---|---|
| Versione | 1.x |
| PHP supportato | ^8.0 |
| Laravel supportato | 8-13 |
| Driver predefinito | Controllo solo nell’ambiente local |
| Driver personalizzati | Aggiungibili con Sentinel::extend() |
Laravel è specializzato nell’evitare gli accessi tramite servizi di tunnel durante lo sviluppo locale; per la protezione in produzione devi creare un driver personalizzato. Quando la documentazione ufficiale sarà pronta, emergeranno pattern d’uso più concreti.
Repository laravel/sentinel
Codice sorgente e ultime modifiche sono nel branch
1.x di GitHub.