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éthodemiddleware() traditionnelle ou du middleware can, il suffit d’ajouter un attribut à la classe ou à la méthode pour tout configurer.
#[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.
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.
#[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
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.