忘了密碼通過郵件找回 更符合現(xiàn)在的情形,可是邏輯比較混亂,在此梳理一下。 請接著往下看
1.創(chuàng)建一個忘了密碼的按鈕鏈接

按鈕
<a href="/admin/password/reset" //跳到寫郵件地址
class="am-btn am-btn-default am-btn-sm am-fr" style="border-radius: 4px;">忘記密碼</a>
地址可以通過 終端 php artisan route:list 查詢地址鏈接
2. 我們現(xiàn)在已經(jīng)跳到了發(fā)送填寫郵件的界面,這個時候我們就需要創(chuàng)建一個通知類`
php artisan make:notification ResetPassword(假設(shè)類名叫做ResetPassword`)
3. 通知類也創(chuàng)建好了, 現(xiàn)在要做的就是以郵件的方式把通知發(fā)送出去。
發(fā)送的方式有兩種。
第一種是通過Laravel自動生成的認證模塊 user.php 里寫一個發(fā)送郵件的方法。
第二種是使用Notification門臉類。
Notification::send($users, new ResetPassword($token))
這里我們就主要了解一下第一種方法。
4. 我們打開user.php 在最下面寫一個public 方法
public function sendPasswordResetNotification($token) {
$this->notify(new ResetPassword($token));
}
5. 現(xiàn)在我們要配置一下.env文件 如下:(qq郵箱為例)
MAIL_DRIVER=smtp
MAIL_HOST=smtp.qq.com
MAIL_PORT=465
MAIL_USERNAME=675983959@qq.com
MAIL_PASSWORD=fzzbaradqwfsbfgd 填寫的是授權(quán)碼
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=675983959@qq.com
MAIL_FROM_NAME=SHOP商城
注意 :如果是qq郵箱 163郵箱需要自行設(shè)置

到了這里功能基本就能實現(xiàn)了。可以發(fā)郵件了...
6. 這時候我們到第一步進入的界面 填寫號郵箱點擊發(fā)送

image.png
發(fā)送之后
MAIL_FROM_ADDRESS=675983959@qq.com 在配置中的該郵箱地址 會收到一個 郵箱。 里面都是英文的內(nèi)容,我們需要把他修改成中文。那么打開第二步運行的命令生成的 Notification文件下的
ResetPassword.php
public function toMail($notifiable)
{
return (new MailMessage)
->subject('重置密碼')
->line('我們已收到您的郵件請求!')
->action('如修改密碼請點擊', url('/admin/password/reset', $this->token))
->line('謝謝您對我們SHOP商城的支持和信任!');
}
$this->token 這個通過構(gòu)造里傳進來 在上面 創(chuàng)建一個成員屬性 var $token 構(gòu)造里如下
public function __construct($token)
{
$this->token = $token;
}

image.png
再還有一點模版里的英文也可以更改 , 自行更改。
7. 效果圖如下:

image.png
8. 點擊如圖的藍色按鈕 會跳到重置密碼 頁面 填好后 跳轉(zhuǎn)可能會有問題
如果是跳到了 xxx.dev/home 這個時候只需要在中間件middleware文件夾下的RedirectIfAuthenticated.php 將里面的內(nèi)容修改為如下圖所示。

image.png