Want to implement this function quickly? Just run php artisan make:auth under the newly installed Laravel application (if you have already executed this command, you can ignore it), and then visit http://your-app.dev/register or other assigned to the application in the browser URL, this command will generate everything needed for user login and registration, including password reset!
Most web applications provide the function of resetting passwords for users, and Laravel is no exception. Laravel provides convenient methods for sending password reset links and implementing password reset logic without you having to Repeat the implementation yourself in each application.
Note: Before using the password reset function provided by Laravel, the User model must use the Illuminate\Notifications\Notifiable trait.
Database related
Before starting, verify that the App\User model implements the Illuminate\Contracts\Auth\CanResetPassword contract. Of course, Laravel's own App\User model already implements this interface and uses the Illuminate\Auth\Passwords\CanResetPassword trait to include the methods needed to implement this interface.
Generate reset token table migration
Next, the table used to store password reset tokens must be created. Laravel already comes with the migration of this table, which is stored in database/migrations directory. So, all you have to do is run the migration:
php artisan migrate
This table is the password_resets:
routing
Laravel comes with Auth\ForgotPasswordController and Auth\ResetPasswordController controllers (these two controller classes will be automatically generated through the php artisan make:auth command), which are used to send password reset link emails and reset user passwords respectively. Function. The routes required to reset the password have been automatically generated through the make:auth command:
php artisan make:auth
The corresponding route is defined in the auth method of Illuminate\Routing\Router:
View
Like routing, the view files required to reset the password are also generated through the make:auth command. These view files are located in
In the resources/views/auth/passwords directory, you can modify the generated files as needed.
Reset Password
After defining the reset user password route and view, you only need to access this entry route through /password/reset in the browser. The ForgotPasswordController that comes with the framework already contains the logic of sending password reset link emails, and the ResetPasswordController contains the logic of resetting user passwords:
Enter the registration email and click Send Password Reset If you set the link, a password reset link will be sent to the email address:
When you open the email address, you will receive a password reset email like this:
Click the reset password button to enter the password reset page:
After filling in the form and submitting it, you can reset the password.
After the password is reset, the user will automatically log in to the application and be redirected to /home. You can customize the jump link after a successful password reset by defining the redirectTo attribute of ResetPasswordController:
protected $redirectTo = '/dashboard';
Note: By default, password reset The token is valid for one hour. You can change the validity time by modifying the expire option in the config/auth.php file.
Customization
Custom authentication Guard
In the configuration file auth.php, you can configure multiple "guards" to implement independent authentication based on multi-user tables. For authentication, you can use the guard of your choice by overriding the guard method on the built-in ResetPasswordController controller, which will return a guard instance:
use Illuminate\Support\Facades\Auth; protected function guard() { return Auth::guard('guard-name'); }
Custom password broker
In the configuration file auth.php, you can configure multiple passwords to reset the password broker of multiple user tables. Similarly, you can use the broker method of your choice by overriding the broker methods in the built-in ForgotPasswordController and ResetPasswordController controllers. Broker:
use Illuminate\Support\Facades\Password;
/** * 获取密码重置期间所使用的broker. * * @return PasswordBroker * @translator laravelacademy.org */ protected function broker() { return Password::broker('name'); }
Custom password reset email
You can easily edit and send the password reset link to the user The notification class implements a custom password reset email. To implement this function, you need to override the sendPasswordResetNotification method on the User model. In this method, you can use any notification class you like to send notifications. This method receives the first The first parameter is password reset $token:
/** * 发送密码重置通知. * * @param string $token * @return void */ public function sendPasswordResetNotification($token) { $this->notify(new ResetPasswordNotification($token)); }
Related recommendations:
Forgot mysql root password reset method
Three steps to reset MySQL root password
Forgot mysql database root user password reset method_MySQL
The above is the detailed content of How to implement Laravel password reset function. For more information, please follow other related articles on the PHP Chinese website!