Überblick
In Laravel 13 können Sie die Middleware-Zuweisung und Autorisierungsprüfungen für Controller mit PHP-Attributen deklarativ definieren. Statt der bisherigenmiddleware()-Methode oder der can-Middleware genügt es, Attribute direkt an Klassen oder Methoden anzubringen.
#[Middleware] — Middleware zuweisen
Anwendung auf Klassen
Wenn Sie#[Middleware] auf Klassenebene anbringen, wird die Middleware auf alle Aktionen dieses Controllers angewendet.
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.
#[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
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.