Panoramica
In Laravel 13 puoi dichiarare l’assegnazione dei middleware e i controlli di autorizzazione sui controller tramite attributi PHP. Al posto del tradizionale metodomiddleware() o del middleware can, basta applicare gli attributi direttamente alla classe o al metodo per completare la configurazione.
#[Middleware] — assegnare i middleware
Applicazione alla classe
Applicando#[Middleware] a livello di classe, il middleware viene applicato a tutte le action di quel controller.
Applicazione al metodo
I middleware applicati a livello di metodo vengono uniti a quelli a livello di classe.Restringere con only / except
Se specifichi only o except sull’attributo a livello di classe, puoi restringere i metodi coinvolti.
Middleware come closure
Gli attributi accettano anche le closure. Utile quando vuoi scrivere la logica inline.Confronto con il tradizionale metodo middleware()
Se usi gli attributi non è necessario implementare l’interfaccia
HasMiddleware. Tuttavia, mescolare il metodo middleware() con gli attributi può portare a comportamenti inattesi, per cui è consigliato scegliere uno solo dei due approcci.#[WithoutMiddleware] — escludere middleware
Esclude un middleware applicato a livello di classe da un metodo specifico o dall’intera classe.
Applicazione al metodo
Applicazione alla classe e only / except
Applicando #[WithoutMiddleware] a livello di classe, il middleware viene escluso da tutte le action, incluse quelle delle classi figlie. Con only / except puoi limitare l’ambito dell’esclusione.
#[Authorize] — autorizzazione tramite policy
Come sintassi zuccherata per il middleware can, puoi dichiarare i controlli di autorizzazione basati su policy tramite attributi.
Uso di base
Argomenti della policy
Come secondo argomento puoi passare:Confronto con il middleware can
Esempi pratici
Applicazione ai resource controller
Applicazione ai controller API
Ordine di elaborazione degli attributi
Quando sono applicati più attributi, l’ordine di elaborazione è il seguente.#[Authorize] funziona internamente come middleware can, quindi viene elaborato nella stessa pipeline di #[Middleware].Riepilogo: quale scegliere?
Prossimi passi
Attributi PHP (code / Eloquent)
Guida agli attributi PHP utilizzabili per i job in coda e i modelli Eloquent.
Intermedio: Controller
Impara l’uso di base dei controller di Laravel.