Zum Inhalt springen
BirdAPI powered by SKYLITE.DESIGN
Kontakt
Zurück zum Blog

Tutorial: Eigene Middleware in Laravel erstellen und nutzen

Meist gelesen

Fortgeschritten

  • Laravel 12
  • PHP 8.4

Middleware in Laravel fungiert als "Wächter" für deine Anfragen und Antworten. Sie befinden sich zwischen einer Anfrage eines Benutzers und der Antwort deiner A...

PDF / Drucken
0 Bewertungen
1.794 0 Kommentare

Schritt 1: Eine neue Middleware erstellen

Laravel bietet einen Artisan-Befehl, um eine neue Middleware zu erstellen. Öffne dein Terminal und navigiere zu deinem Laravel-Projektordner. Führe den folgenden Befehl aus, um eine neue Middleware namens CheckAge zu erstellen:
shell
php artisan make:middleware CheckAge

Info

Dieser Befehl erstellt eine neue Datei CheckAge.php im Ordner app/Http/Middleware.

Schritt 2: Middleware bearbeiten

Jetzt, da unsere Middleware erstellt wurde, öffnen wir die Datei CheckAge.php im Verzeichnis app/Http/Middleware. In dieser Datei können wir die Logik definieren, die vor der Weiterleitung der Anfrage ausgeführt wird. In unserem Fall wollen wir überprüfen, ob der Benutzer mindestens 18 Jahre alt ist.
blade
<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class CheckAge
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle(Request $request, Closure $next)
    {
        // Prüfe, ob der 'age'-Parameter in der Anfrage vorhanden und >= 18 ist
        if ($request->input('age') < 18) {
            // Wenn der Benutzer zu jung ist, leiten wir ihn zur 'home'-Seite um
            return redirect('home')->with('error', 'Du bist zu jung für diesen Bereich!');
        }

        // Wenn der Benutzer mindestens 18 Jahre alt ist, wird die Anfrage fortgesetzt
        return $next($request);
    }
}

Schritt 3: Middleware registrieren

Nachdem wir die Middleware erstellt haben, müssen wir sie in Laravel registrieren. Öffne dazu die Datei app/Http/Kernel.php. Dort gibt es zwei wichtige Bereiche, um Middleware zu registrieren:
$middleware: Diese Middleware wird global für jede Anfrage angewendet. $routeMiddleware: Hier können wir benannte Middleware registrieren, die für spezifische Routen verwendet wird.
Durch diese Registrierung kann unsere Middleware jetzt mit dem Namen age in Routen verwendet werden.

Info

Wir werden unsere Middleware CheckAge im Bereich $routeMiddleware registrieren:

php
protected $routeMiddleware = [
    // Andere Middleware...
    'age' => \App\Http\Middleware\CheckAge::class,
];

Schritt 4: Middleware auf eine Route anwenden

Nachdem wir unsere Middleware registriert haben, können wir sie auf eine bestimmte Route anwenden. Öffne die Datei routes/web.php und füge eine Route hinzu, die unsere age-Middleware verwendet:
php
Route::get('/restricted', function () {
    return 'Willkommen in der Erwachsenenwelt!';
})->middleware('age');
Diese Route nutzt die Middleware age, um sicherzustellen, dass nur Benutzer, die mindestens 18 Jahre alt sind, Zugriff erhalten.

Schritt 5: Testen der Middleware

Um zu testen, ob unsere Middleware funktioniert, können wir verschiedene URLs in unserem Browser aufrufen oder Postman verwenden. Angenommen, unser Laravel-Projekt läuft auf http://localhost:8000:
Wenn du zu http://localhost:8000/restricted?age=20 gehst, sollte die Seite „Willkommen in der Erwachsenenwelt!“ angezeigt werden.

Schritt 6: Weitere Tipps und Tricks

Middleware-Parameter: Du kannst auch Parameter an Middleware übergeben. Beispielsweise könntest du eine Middleware erstellen, die auf einer anderen Bedingung basiert (z. B. einer Altersgrenze, die als Parameter übergeben wird).

n deiner Middleware kannst du dann den Parameter abfangen und verwenden:

php
Route::get('/restricted', function () {
    return 'Willkommen in der Erwachsenenwelt!';
})->middleware('age:21');
php
public function handle(Request $request, Closure $next, $age)
{
    if ($request->input('age') < $age) {
        return redirect('home')->with('error', 'Du bist zu jung für diesen Bereich!');
    }

    return $next($request);
}

Globale Middleware vs. Routen-Middleware

Verwende globale Middleware für Aufgaben, die auf jede Anfrage angewendet werden müssen, z. B. das Überprüfen von CSRF-Token. Verwende benannte Middleware für spezifische Routen, um deine Logik sauber und modular zu halten.

Mehrere Middleware auf eine Route anwenden:

Du kannst mehrere Middleware-Klassen auf eine einzige Route anwenden:
php
Route::get('/restricted', function () {
    return 'Willkommen!';
})->middleware(['auth', 'age']);

Fehlermeldungen und Debugging

Nutze dd() (Dump and Die) oder Log::info() innerhalb deiner Middleware, um Debugging-Informationen anzuzeigen und Probleme schnell zu identifizieren:
php
use Illuminate\Support\Facades\Log;

public function handle(Request $request, Closure $next)
{
    Log::info('Request Age:', ['age' => $request->input('age')]);
    // Weitere Middleware-Logik...
}
Middleware in Laravel ist unglaublich mächtig und flexibel. Sie ermöglicht es uns, eine Vielzahl von Aufgaben zwischen der Anfrage und der Antwort zu erledigen. Egal, ob es um Authentifizierung, Logging, Caching oder benutzerdefinierte Anforderungen geht – Middleware ist ein unverzichtbares Werkzeug im Laravel-Werkzeugkasten. Also, experimentiere, sei kreativ und nutze die volle Kraft der Middleware für deine Anwendungen!

Kommentare 0

Noch keine Kommentare. Seien Sie der Erste!

Kommentar schreiben

Ihre Meinung ist willkommen — Kommentare erscheinen nach kurzer Prüfung.

Kommentare werden vor Veröffentlichung moderiert.