App\Middleware
CsrfMiddleware
Schützt zustandsändernde Requests (POST, PUT, PATCH, DELETE) gegen Cross-Site Request Forgery. Der Token kann als Formularfeld oder HTTP-Header übermittelt werden.
Interface
Alle Middleware-Klassen implementieren App\Routing\MiddlewareInterface:
PHP
interface MiddlewareInterface
{
public function handle(Request $request, Closure $next): Response;
}
Methoden
| Methode | Rückgabetyp | Beschreibung |
|---|---|---|
| handle(Request \$request, Closure \$next) | Response | Prüft bei POST/PUT/PATCH/DELETE ob ein gültiger CSRF-Token vorhanden ist. Sucht in \$request->body[\"_csrf_token\"] und \$request->headers[\"x-csrf-token\"]. Bei ungültigem Token: 403 Forbidden. |
| generateToken() (static) | string | Erstellt einen neuen CSRF-Token (32 Bytes, hex-kodiert), speichert ihn in \$_SESSION[\"_csrf_token\"] und gibt ihn zurück. |
Verwendung
PHP
// Middleware aktivieren (z.B. global oder pro Gruppe)
$router->post("/users", UserController::class, "store")
->middleware(CsrfMiddleware::class);
// Token im Template ausgeben (Blade)
// →
// Token manuell generieren (z.B. in Blade-Engine Callback)
$blade->setCsrfToken(fn() => CsrfMiddleware::generateToken());
// AJAX-Requests: Token im Header senden
fetch("/api/users", {
method: "POST",
headers: { "X-CSRF-Token": document.querySelector("[name=_csrf_token]").value },
body: JSON.stringify(data)
});