Skip to main content

Überblick

In Laravel 13 können Sie die Middleware-Zuweisung und Autorisierungsprüfungen für Controller mit PHP-Attributen deklarativ definieren. Statt der bisherigen middleware()-Methode oder der can-Middleware genügt es, Attribute direkt an Klassen oder Methoden anzubringen.
Alle Controller-Attribute befinden sich im Namespace Illuminate\Routing\Attributes\Controllers.

#[Middleware] — Middleware zuweisen

Anwendung auf Klassen

Wenn Sie #[Middleware] auf Klassenebene anbringen, wird die Middleware auf alle Aktionen dieses Controllers angewendet.
Um mehrere Middlewares anzugeben, wiederholen Sie das Attribut.

Anwendung auf Methoden

Auf Methodenebene angebrachte Middleware wird mit der Middleware auf Klassenebene zusammengeführt.

Einschränkung über only / except

Wenn Sie only oder except bei Attributen auf Klassenebene angeben, können Sie die betroffenen Methoden einschränken.

Closure-Middleware

Für Attribute lassen sich auch Closures verwenden. Das ist praktisch, wenn Sie die Logik inline schreiben möchten.

Vergleich mit der klassischen middleware()-Methode

Wenn Sie Attribute verwenden, müssen Sie das Interface HasMiddleware nicht implementieren. Da eine Mischung aus middleware()-Methode und Attributen jedoch zu unerwartetem Verhalten führen kann, empfehlen wir, sich auf eine der beiden Varianten festzulegen.

#[WithoutMiddleware] — Middleware ausschließen

Schließt Middleware, die auf Klassenebene angewendet wurde, für bestimmte Methoden oder die gesamte Klasse aus.

Anwendung auf Methoden

Anwendung auf Klassen und only / except

Wenn Sie #[WithoutMiddleware] auf Klassenebene anbringen, wird die Middleware für alle Aktionen, einschließlich abgeleiteter Klassen, ausgeschlossen. Mit only / except können Sie den Umfang des Ausschlusses einschränken.
#[WithoutMiddleware] wirkt nur für Route-Middleware. Globale Middleware, die in app/Http/Kernel.php registriert ist, kann nicht ausgeschlossen werden.

#[Authorize] — Autorisierung über Policies

Als Kurzform für die can-Middleware können Sie Autorisierungsprüfungen über Policies deklarativ per Attribut definieren.

Grundlegende Verwendung

Argumente der Policy

Als zweites Argument können Sie Folgendes übergeben:

Vergleich mit der can-Middleware

Sie müssen die Middleware nicht mehr in der Route-Datei angeben, und die Autorisierungslogik wird im Controller gebündelt.

Praxisbeispiele

Anwendung auf Resource Controller

Anwendung auf API-Controller

Verarbeitungsreihenfolge der Attribute

Wenn mehrere Attribute angebracht sind, ist die Verarbeitungsreihenfolge wie folgt:
#[Authorize] wird intern wie die can-Middleware behandelt und daher in derselben Pipeline verarbeitet wie #[Middleware].

Zusammenfassung: Welche Variante sollten Sie wählen?

Nächste Schritte

PHP-Attribute (Queue, Eloquent)

Erläuterung der PHP-Attribute, die in Queue-Jobs und Eloquent-Modellen verwendet werden können.

Fortgeschritten: Controller

Grundlagen zur Verwendung von Laravel-Controllern.
Zuletzt geändert am 2. August 2026