Tutorial: Eigene Middleware in Laravel erstellen und nutzen
Tutorial: Eigene Middleware in Laravel erstellen und nutzen, 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 Anwendung. Mit Middleware kannst du bestimmte Aktionen durchführen, bevor eine Anfrage an deinen Controller weitergegeben wird, oder nachdem eine Antwort generiert wurde. Beispiele für Middleware sind Authentifizierung, Logging, Caching, und vieles mehr. In diesem Tutorial zeige ich dir, wie du eine eigene Middleware in Laravel erstellst und effektiv nutzt. Wir werden eine Middleware erstellen, die den Zugriff auf eine Route basierend auf dem Alter des Benutzers einschränkt – ein Klassiker für Websites mit altersbeschränktem Inhalt.
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:
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.
<?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.
INFO:Wir werden unsere Middleware CheckAge im Bereich $routeMiddleware registrieren:
protected $routeMiddleware = [
// Andere Middleware...
'age' => \App\Http\Middleware\CheckAge::class,
];
Durch diese Registrierung kann unsere Middleware jetzt mit dem Namen age in Routen verwendet werden.
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:
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.
Tipp:Wenn du zu http://localhost:8000/restricted?age=15 gehst, wirst du zur /home-Route umgeleitet und erhältst die Nachricht „Du bist zu jung für diesen Bereich!“.
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).
Route::get('/restricted', function () {
return 'Willkommen in der Erwachsenenwelt!';
})->middleware('age:21');
n deiner Middleware kannst du dann den Parameter abfangen und verwenden:
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:
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:
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!
0 Kommentare
Bitte Loge dich ein um ein Kommentar zu Hinterlassen!
oder Login mit Google