Skip to main content

Aperçu

Laravel 13 permet désormais de déclarer l’affectation de middlewares et les vérifications d’autorisation d’un contrôleur à l’aide d’attributs PHP. À la place de la méthode middleware() traditionnelle ou du middleware can, il suffit d’ajouter un attribut à la classe ou à la méthode pour tout configurer.
Tous les attributs de contrôleur se trouvent dans l’espace de noms Illuminate\Routing\Attributes\Controllers.

#[Middleware] — assigner un middleware

Application à la classe

Lorsque #[Middleware] est appliqué au niveau de la classe, le middleware est appliqué à toutes les actions du contrôleur.
Pour attacher plusieurs middlewares, il suffit de répéter l’attribut.

Application aux méthodes

Un middleware appliqué au niveau d’une méthode est fusionné avec ceux définis au niveau de la classe.

Filtrage avec only / except

En précisant only ou except sur un attribut appliqué au niveau de la classe, vous pouvez restreindre les méthodes ciblées.

Middleware sous forme de closure

Les attributs acceptent aussi des closures. C’est pratique lorsque vous souhaitez écrire le traitement en ligne.

Comparaison avec la méthode middleware() traditionnelle

Lorsque vous utilisez les attributs, il n’est pas nécessaire d’implémenter l’interface HasMiddleware. Toutefois, mélanger la méthode middleware() et les attributs peut conduire à des comportements imprévus : il est recommandé d’utiliser exclusivement l’une ou l’autre approche.

#[WithoutMiddleware] — exclure un middleware

Cet attribut permet d’exclure un middleware appliqué au niveau de la classe pour une méthode spécifique ou pour toute la classe.

Application aux méthodes

Application à la classe avec only / except

Lorsque #[WithoutMiddleware] est appliqué au niveau de la classe, le middleware est exclu de toutes les actions, y compris dans les classes filles. Utilisez only / except pour restreindre la portée de l’exclusion.
#[WithoutMiddleware] n’agit que sur les middlewares de route. Les middlewares globaux enregistrés dans app/Http/Kernel.php ne peuvent pas être exclus.

#[Authorize] — autorisation via les policies

En tant que sucre syntaxique du middleware can, cet attribut permet de déclarer une vérification d’autorisation basée sur une policy.

Utilisation de base

Arguments de la policy

Le deuxième argument accepte les valeurs suivantes :

Comparaison avec le middleware can

Vous n’avez plus besoin de déclarer les middlewares dans le fichier de routes : la logique d’autorisation est centralisée dans le contrôleur.

Exemples pratiques

Application à un contrôleur de ressource

Application à un contrôleur d’API

Ordre de traitement des attributs

Lorsque plusieurs attributs sont appliqués, l’ordre de traitement est le suivant :
En interne, #[Authorize] fonctionne comme un middleware can et est donc traité dans le même pipeline que #[Middleware].

Récapitulatif : laquelle choisir ?

Étapes suivantes

Attributs PHP (queue et Eloquent)

Présentation des attributs PHP utilisables sur les jobs de queue et les modèles Eloquent.

Niveau intermédiaire : contrôleurs

Apprenez les bases de l’utilisation des contrôleurs Laravel.
Dernière modification le 2 août 2026