Skip to main content

Einführung

Das Zurücksetzen von Passwörtern gehört zu den unverzichtbaren Authentifizierungs-Flows einer Webanwendung. Nutzen Sie ein Starter-Kit, wird diese Funktion automatisch aufgebaut. In reinen API-Projekten oder wenn Sie ein eigenes UI aufbauen, ist eine manuelle Umsetzung nötig. Wann eine manuelle Umsetzung nötig ist:
  • Reines API-Backend (Frontend ist SPA oder Mobile App)
  • Sie bauen die Auth-UI selbst, ohne Starter-Kit
  • Sie möchten E-Mail-Benachrichtigungen oder Reset-URLs vollständig anpassen
Wenn Sie das Projekt mit einem Starter-Kit erstellt haben (laravel new), ist die Passwort-Reset-Funktion bereits implementiert. Diese Seite beschreibt die Umsetzung ohne Starter-Kit.
Der gesamte Ablauf sieht so aus:

Konfiguration

Die Einstellungen für das Zurücksetzen von Passwörtern werden in config/auth.php unter dem Schlüssel passwords verwaltet.
  • driver — Speicherart (database oder cache)
  • expire — Gültigkeit des Tokens in Minuten. Standard: 60 Minuten
  • throttle — Wartezeit bis zum nächsten Sendeversuch (in Sekunden)

Treiber

database-Treiber

Der Standardtreiber. Die Reset-Tokens werden in der Datenbanktabelle password_reset_tokens gespeichert. Diese Tabelle ist in der Standardmigration von Laravel (0001_01_01_000000_create_users_table.php) enthalten.

cache-Treiber

Diese Option ist ab Laravel 11 verfügbar. Da keine Datenbanktabelle nötig ist, können Sie das Zurücksetzen von Passwörtern mit einem schlanken Setup implementieren.
Der cache-Treiber speichert Tokens in einem Cache-Store. Die Migration für password_reset_tokens entfällt. Tokens werden unter dem Schlüssel „E-Mail-Adresse des Benutzers“ abgelegt – nutzen Sie daher an anderer Stelle in der App nicht dieselbe E-Mail-Adresse als Cache-Schlüssel.
Geben Sie im Schlüssel store einen dedizierten Cache-Store an, verhindern Sie, dass Ihre Reset-Daten durch php artisan cache:clear gelöscht werden. Der Wert muss einem in config/cache.php konfigurierten Store-Namen entsprechen.

Modell vorbereiten

Damit das Zurücksetzen von Passwörtern funktioniert, braucht das Modell App\Models\User zwei Traits.
  • Notifiable — nötig, um E-Mail-Benachrichtigungen zu versenden
  • CanResetPassword — stellt Methoden zum Erzeugen und Prüfen von Reset-Tokens bereit
Das Standardmodell User von Laravel enthält diese Traits bereits. Bei einer Neuinstallation müssen Sie nichts hinzufügen.

Routen umsetzen

Das Zurücksetzen von Passwörtern benötigt vier Routen. Zeigt ein Formular an, in dem der Benutzer die E-Mail-Adresse eingibt.
Zugehörige Blade-View:
Nimmt das Formular entgegen und versendet mit Password::sendResetLink() die Reset-E-Mail.
Password::sendResetLink() gibt einen Status-String zurück.

3. Passwort-Reset-Formular

Zeigt dem Benutzer, der den Link in der E-Mail geklickt hat, ein Formular zur Eingabe eines neuen Passworts an.
Zugehörige Blade-View:

4. Passwort-Reset ausführen

Nimmt das Formular entgegen und aktualisiert mit Password::reset() das Passwort.
Status-Konstanten von Password::reset():

Token-Gültigkeit

Über die Option expire in config/auth.php legen Sie die Gültigkeit des Tokens in Minuten fest. Standard: 60 Minuten.
Beim database-Treiber bleiben abgelaufene Tokens in der Datenbank stehen. Mit folgendem Artisan-Befehl räumen Sie sie regelmäßig auf.
Am besten automatisieren Sie das über den Scheduler.

Anpassungen

Eigene Benachrichtigung

Um die Reset-E-Mail anzupassen, überschreiben Sie im User-Modell die Methode sendPasswordResetNotification.
Mit ResetPassword::createUrlUsing() in der Methode boot des AppServiceProvider ändern Sie die URL des Reset-Links. Nützlich, wenn Sie – etwa bei einem SPA – auf ein anderes Frontend-Origin weiterleiten möchten.

Trusted Hosts konfigurieren

Die Reset-URL wird aus dem Host-Header des HTTP-Requests aufgebaut. Um Requests von unerlaubten Hosts zu unterbinden, empfehlen wir die Konfiguration von Trusted Hosts in bootstrap/app.php.
Wenn Sie das Zurücksetzen von Passwörtern anbieten, prüfen Sie unbedingt Ihre Trusted-Hosts-Konfiguration. Eine unzureichende Konfiguration birgt das Risiko einer Host-Header-Injection.

Zusammenfassung

Nächste Schritte

Einführung in Authentifizierung

Verstehen Sie das gesamte Authentifizierungssystem von Laravel.

Notifications

Erfahren Sie mehr zum Anpassen von E-Mail-Benachrichtigungen.
Zuletzt geändert am 13. Juli 2026