Skip to main content

Overzicht

In Laravel 13 kun je de toewijzing van middleware en autorisatiecontroles voor controllers declareren met PHP-attributes. In plaats van de traditionele middleware()-methode of de can-middleware zet je simpelweg attributes op de klasse of methode en is de configuratie compleet.
Alle controller-attributes staan in de namespace Illuminate\Routing\Attributes\Controllers.

#[Middleware] — middleware toewijzen

Toepassing op de klasse

Zet je #[Middleware] op klasseniveau, dan wordt de middleware toegepast op alle acties van die controller.
Wil je meerdere middleware toevoegen, dan herhaal je het attribute.

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.
#[WithoutMiddleware] werkt alleen voor routemiddleware. Globale middleware die geregistreerd staat in app/Http/Kernel.php kun je niet uitsluiten.

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

Je hoeft geen middleware meer in het routebestand te zetten en de autorisatielogica wordt gebundeld in de controller.

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.
Laatst gewijzigd op 6 september 2026