How to implement Laravel password reset function

小云云
Release: 2023-03-20 11:50:01
Original
1487 people have browsed it

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');
}
Copy after login

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');
}
Copy after login

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));
}
Copy after login

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!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template