laravel6通过邮箱验证码实现忘记密码的功能
时间: 2023-07-15 17:14:30 浏览: 132
可以按照以下步骤实现laravel6通过邮箱验证码实现忘记密码的功能:
1. 创建忘记密码页面和发送邮件页面,包括输入框和发送按钮。
2. 创建路由:
```php
Route::get('forgot-password', 'ForgotPasswordController@showLinkRequestForm')->name('password.request');
Route::post('forgot-password', 'ForgotPasswordController@sendResetLinkEmail')->name('password.email');
```
3. 创建控制器:
```php
php artisan make:controller ForgotPasswordController
```
4. 在控制器中编写 showLinkRequestForm 方法和 sendResetLinkEmail 方法。
```php
public function showLinkRequestForm()
{
return view('auth.passwords.email');
}
public function sendResetLinkEmail(Request $request)
{
$this->validateEmail($request);
$user = User::where('email', $request->email)->first();
if (!$user) {
return redirect()->back()->withErrors(['email' => '该邮箱未注册']);
}
$token = str_random(64);
DB::table('password_resets')->insert([
'email' => $request->email,
'token' => $token,
'created_at' => Carbon::now()
]);
Mail::to($request->email)->send(new ResetPassword($token));
return redirect()->back()->with('success', '重置密码邮件已发送,请注意查收');
}
protected function validateEmail(Request $request)
{
$request->validate(['email' => 'required|email']);
}
```
5. 创建邮件模板:
```php
php artisan make:mail ResetPassword --markdown=emails.reset_password
```
6. 在邮件模板中编写重置密码邮件的内容:
```php
@component('mail::message')
# 重置密码
请点击以下按钮重置密码:
@component('mail::button', ['url' => route('password.reset', ['token' => $token])])
重置密码
@endcomponent
如果您没有请求重置密码,请忽略此邮件。
Thanks,<br>
{{ config('app.name') }}
@endcomponent
```
7. 在 .env 文件中配置邮箱信息:
```php
MAIL_DRIVER=smtp
MAIL_HOST=smtp.qq.com
MAIL_PORT=465
MAIL_USERNAME=youremail@qq.com
MAIL_PASSWORD=yourpassword
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=youremail@qq.com
MAIL_FROM_NAME="${APP_NAME}"
```
8. 运行应用并测试重置密码功能。
阅读全文