Passwort zurücksetzen
Möchten Sie schnell loslegen?{note} Bevor Sie die Funktion zum Zurücksetzen des Passworts von Laravel verwenden, muss Ihr Benutzermodell das MerkmalFühren Sie einfach in Ihrer neuen Laravel-Anwendung aus und öffnen Sie dann in Ihrem Browser oder weisen Sie Ihrer Anwendung eine beliebige URL zu. Dieser Befehl ist für die Einrichtung des gesamten Authentifizierungssystems verantwortlich, einschließlich des Zurücksetzens des Passworts!
Die meisten Webanwendungen bieten Benutzern die Möglichkeit, ihr Passwort zurückzusetzen. Anstatt Sie zu zwingen, diese Funktionalität in jeder Anwendung erneut zu implementieren, bietet Laravel praktische Möglichkeiten, Passworterinnerungen zu senden und Passwortzurücksetzungen durchzuführen.php artisan make:auth
http://your-app.test/register
verwenden.
IlluminateNotificationsNotifiable
Datenbanknotizen
Überprüfen Sie zunächst, ob Ihr AppUser
-Modell den IlluminateContractsAuthCanResetPassword
-Vertrag implementiert. Natürlich implementieren die im Framework enthaltenen AppUser
-Modelle diese Schnittstelle bereits und verwenden das IlluminateAuthPasswordsCanResetPassword
-Merkmal t, um die zur Implementierung der Schnittstelle erforderlichen Methoden einzubinden.
Tabellenmigration zum Generieren von Reset-Tokens
Als nächstes muss eine Datentabelle erstellt werden, um das Passwort-Reset-Token zu speichern. Die Migration dieser Datentabelle ist im Verzeichnis database/migrations
der Laravel-Anwendung enthalten. Sie müssen also nur den Datenbankmigrationsbefehl ausführen:
php artisan migrate
routing
Laravel ist bereits vorhanden Die Klassen AuthForgotPasswordController
und AuthResetPasswordController
enthalten die Logik zum Senden von Link-E-Mails zum Zurücksetzen des Passworts und zum Zurücksetzen von Benutzerpasswörtern. Alle zum Durchführen eines Passwort-Resets erforderlichen Routen können mit dem Artisan-Befehl make:auth
generiert werden:
php artisan make:auth
View
Wenn der Befehl make:auth
ausgeführt wird, generiert Laravel alle Ansichten, die zum Zurücksetzen des Passworts erforderlich sind. Diese Ansichten befinden sich im Verzeichnis resources/views/auth/passwords
. Sie können diese Ansichten entsprechend den Anforderungen Ihrer Anwendung ändern.
Nach dem Zurücksetzen des Passworts
Sobald Sie die Routen und Ansichten zum Zurücksetzen des Benutzerpassworts definiert haben, können Sie auf die zugreifen /password/reset
Route in Ihrem Browser, um Ihr Passwort zurückzusetzen. Das ForgotPasswordController
im Framework enthält bereits die Logik zum Versenden der E-Mail mit dem Link zum Zurücksetzen des Passworts, während ResetPasswordController
die Logik zum Zurücksetzen des Passworts des Benutzers enthält.
Nach dem Zurücksetzen des Passworts wird der Benutzer automatisch angemeldet und zu /home
weitergeleitet. Sie können anpassen, wohin nach einer Passwortzurücksetzung umgeleitet werden soll, indem Sie in ResetPasswordController
ein redirectTo
-Attribut definieren:
protected $redirectTo = '/dashboard';
{note} Standardmäßig läuft das Passwort-Reset-Token in Stunden ab. Sie können dies über die Option zum Zurücksetzen des Passworts
config/auth.php
in der Dateiexpire
ändern.
Anpassen
Benutzerdefinierter Authentifizierungs-Watcher
In Ihr auth.php
In der Konfigurationsdatei können Sie mehrere „Watcher“ konfigurieren, mit denen Sie das Authentifizierungsverhalten mehrerer Benutzertabellen definieren können. Sie können das ResetPasswordController
im Framework anpassen, um den Watcher Ihrer Wahl zu verwenden, indem Sie die guard
-Methode im Controller überschreiben. Diese Methode sollte eine Guard-Instanz zurückgeben:
use Illuminate\Support\Facades\Auth;protected function guard(){ return Auth::guard('guard-name'); }
Benutzerdefinierte Passwort-Agenten
In Ihrer auth.php
Konfigurationsdatei können Sie mehrere Passwort-„Agenten“ konfigurieren, die zum Zurücksetzen von Passwörtern für mehrere Benutzertabellen verwendet werden können. Sie können ForgotPasswordController
und ResetPasswordController
im Framework anpassen, um den Proxy Ihrer Wahl zu verwenden, indem Sie die broker
-Methode im Controller überschreiben:
use Illuminate\Support\Facades\Password; /** * 获取在密码重置期间使用的代理。 * * @return PasswordBroker */ protected function broker(){ return Password::broker('name'); }
Benutzerdefinierte Passwort-Reset-E-Mail
Sie können die Benachrichtigungsklasse, die zum Senden von Links zum Zurücksetzen des Passworts an Benutzer verwendet wird, einfach ändern. Überschreiben Sie zunächst die Methode User
im Modell. Bei dieser Methode können Sie zum Versenden der Benachrichtigung eine beliebige Benachrichtigungsklasse Ihrer Wahl verwenden. Der erste von dieser Methode empfangene Parameter ist das Passwort-Reset-Token sendPasswordResetNotification
: $token
/** * 发送密码重置通知。 * * @param string $token * @return void */ public function sendPasswordResetNotification($token){ $this->notify(new ResetPasswordNotification($token)); }Dieser Artikel wurde zuerst auf der Website