Overzicht
In Laravel 13 kun je de toewijzing van middleware en autorisatiecontroles voor controllers declareren met PHP-attributes. In plaats van de traditionelemiddleware()-methode of de can-middleware zet je simpelweg attributes op de klasse of methode en is de configuratie compleet.
#[Middleware] — middleware toewijzen
Toepassing op de klasse
Zet je#[Middleware] op klasseniveau, dan wordt de middleware toegepast op alle acties van die controller.
Toepassing op een methode
Middleware op methodeniveau wordt samengevoegd met de middleware op klasseniveau.Inperken met only / except
Geef je bij een attribute op klasseniveau only of except op, dan kun je de doelmethodes inperken.
Closure-middleware
Je kunt in attributes ook closures gebruiken. Handig wanneer je de verwerking inline wilt schrijven.Vergelijking met de traditionele middleware()-methode
Gebruik je attributes, dan hoef je de interface
HasMiddleware niet te implementeren. Het mengen van de middleware()-methode en attributes kan echter tot onbedoeld gedrag leiden, dus we raden aan één van beide consequent te gebruiken.#[WithoutMiddleware] — middleware uitsluiten
Sluit middleware die op klasseniveau is toegepast uit voor een specifieke methode of voor de hele klasse.
Toepassing op een methode
Toepassing op de klasse en only / except
Zet je #[WithoutMiddleware] op klasseniveau, dan wordt de middleware uitgesloten voor alle acties, inclusief die van kindklassen. Met only / except beperk je het bereik van de uitsluiting.
#[Authorize] — autorisatie via policies
Als suikersyntaxis voor de can-middleware kun je autorisatiecontroles via policies declareren met een attribute.
Basisgebruik
Argumenten van de policy
Als tweede argument kun je het volgende doorgeven:Vergelijking met de can-middleware
Praktijkvoorbeelden
Toepassing op een resource controller
Toepassing op een API-controller
Verwerkingsvolgorde van attributes
Zijn er meerdere attributes toegepast, dan is de verwerkingsvolgorde als volgt:#[Authorize] werkt intern als de can-middleware en wordt daarom in dezelfde pipeline verwerkt als #[Middleware].Samenvatting: welke aanpak kies je?
Volgende stappen
PHP-attributes (queues en Eloquent)
Uitleg over PHP-attributes die je kunt gebruiken bij queue jobs en Eloquent-modellen.
Gevorderd: controllers
Leer de basis van Laravel-controllers.