Skip to main content
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 applicare SentinelMiddleware 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 su gate.
Questo approccio dipendeva dallo stato di autenticazione dell’utente, con il problema di “non poter decidere se non si è loggati”. Sentinel funziona come middleware e controlla l’accesso a livello di richiesta, indipendentemente dall’autenticazione. Inoltre puoi definire in un unico posto regole valide per più strumenti di gestione.

Installazione

Poiché 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 predefinito Laravel controlla solo nell’ambiente locale (APP_ENV=local).
Il flusso può essere riassunto così.
Il driver Laravel restituisce sempre true (consentito) al di fuori dell’ambiente local. Se ti serve un controllo degli accessi in produzione, crea un driver personalizzato.

Determinazione dell’IP privato

isPrivateIp() nella classe base Driver usa IpUtils di Symfony e considera privati i seguenti range di IP.

Rilevamento di ambiente Docker locale

Considera come ambiente Docker locale il caso in cui 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 di driverOrFallback()).

Implementazione del middleware

Se 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 astratta Driver e implementando authorize().
La registrazione con extend() va fatta in AppServiceProvider::boot() o simili.

Sfruttare i metodi utility della classe base

La classe Driver 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à. Il driver predefinito 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.
Ultima modifica il 13 luglio 2026