Skip to main content

Wie die Facade RateLimiter funktioniert

Das Rate Limiting in Laravel setzt sich aus der Klasse Illuminate\Cache\RateLimiting\Limit und der Facade RateLimiter zusammen. Intern speichert es Zähler im Cache-Treiber (standardmäßig File oder Redis) und verfolgt so die Anzahl der Anfragen. Die Middleware throttle führt für jede Anfrage die per RateLimiter::for() definierte Closure aus und liefert bei Überschreitung 429 Too Many Requests.

Definition eigener Limiter im AppServiceProvider

Die Rate-Limit-Konfiguration erfolgt in der boot()-Methode von App\Providers\AppServiceProvider.
Das erste Argument von RateLimiter::for() ist der Limiter-Name, den die Middleware throttle verwendet. Die Closure als zweites Argument muss eine Instanz von Illuminate\Cache\RateLimiting\Limit zurückgeben.

Rate Limits nach Nutzer, IP-Adresse oder Plan

Unterschiedliche Limits für authentifizierte Nutzer und Gäste

Limits nach Nutzerplan

Globales Limit je IP-Adresse

Throttling pro IP-Adresse, unabhängig vom Endpunkt.

Mehrere Limits kombinieren

Ein Array führt dazu, dass alle Limits ausgewertet werden. Sobald eines erreicht wird, folgt 429.
Wenn Sie mehrere Limits mit demselben by-Wert definieren, versehen Sie die Keys mit Präfixen, damit sie nicht kollidieren.

Angabe eigener Limiter-Namen an der throttle-Middleware

Übergeben Sie den definierten Limiter-Namen an die Middleware throttle.

Registrierung in bootstrap/app.php

Ab Laravel 11 verwalten Sie Middleware in bootstrap/app.php.

Beispielhafte Anwendung auf API-Routen

1

Limiter definieren

Definieren Sie im AppServiceProvider mehrere Limiter.
2

Middleware an Routen anwenden

Response-Header (X-RateLimit-*)

Die Middleware throttle fügt Limit-Infos automatisch als Response-Header an.

Eigene Response zurückgeben

Manuelle Prüfung mit RateLimiter::attempt()

Wenn Sie das Rate Limit unabhängig von der throttle-Middleware zu einem beliebigen Zeitpunkt im Code prüfen wollen, nutzen Sie RateLimiter::attempt().

Anzahl der Versuche prüfen und zurücksetzen

Beispiel: Login-Throttling

Response-basiertes Rate Limiting

Wenn nur bestimmte Responses gezählt werden sollen, verwenden Sie after(). Ein Beispiel, das nur 404-Responses zählt, um Enumeration-Angriffe zu verhindern:

Rate Limiting mit Redis

Wenn Sie den Cache-Standardtreiber auf Redis umstellen, nutzt auch die throttle-Middleware automatisch Redis.

Redis-Treiber konfigurieren

throttleWithRedis verwenden

Für die Redis-optimierte Throttle-Middleware rufen Sie in bootstrap/app.php die Methode throttleWithRedis() auf.
Dadurch wird die throttle-Middleware auf die Klasse ThrottleRequestsWithRedis gemappt und nutzt atomare Redis-Operationen für präzises Zählen.
Wenn Sie throttleWithRedis() verwenden, stellen Sie sicher, dass Redis stets verfügbar ist. Fällt die Verbindung zu Redis aus, können unter Umständen alle Anfragen abgewiesen werden.

Vorteile von Redis

  • Horizontal skalierbar — Zähler werden über mehrere Serverinstanzen geteilt.
  • Hohe Genauigkeit — atomare Operationen verhindern Race Conditions.
  • TTL-Verwaltung — die native Ablaufzeit von Redis löscht die Zähler automatisch.

Verwandte Seiten

Cache

Erfahren Sie mehr über Konfiguration und Verwendung der Laravel-Cache-Treiber inklusive Redis.
Zuletzt geändert am 13. Juli 2026