Skip to main content

Panoramica

In Laravel 13 puoi dichiarare l’assegnazione dei middleware e i controlli di autorizzazione sui controller tramite attributi PHP. Al posto del tradizionale metodo middleware() o del middleware can, basta applicare gli attributi direttamente alla classe o al metodo per completare la configurazione.
Tutti gli attributi dei controller si trovano nel namespace Illuminate\Routing\Attributes\Controllers.

#[Middleware] — assegnare i middleware

Applicazione alla classe

Applicando #[Middleware] a livello di classe, il middleware viene applicato a tutte le action di quel controller.
Per assegnare più middleware, ripeti l’attributo.

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.
#[WithoutMiddleware] funziona solo con i middleware di route. I middleware globali registrati in app/Http/Kernel.php non possono essere esclusi.

#[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

Non serve più scrivere il middleware nel file di route e la logica di autorizzazione viene centralizzata nel controller.

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.
Ultima modifica il 2 agosto 2026