忘了密碼通過郵件找回 更符合現在的情形,可是邏輯比較混亂,在此梳理一下。 請接著往下看
1.建立一個忘了密碼的按鈕連結
<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. 我們現在已經跳到了傳送填寫郵件的介面,這個時候我們就需要建立一個通知類`
php artisan make:notification ResetPassword
(假設類名叫做 ResetPassword
)
3. 通知類也建立好了, 現在要做的就是以郵件的方式把通知傳送出去。
傳送的方式有兩種。
第一種是通過Laravel自動生成的認證模組 user.php 裡寫一個傳送郵件的方法。
第二種是使用Notification
門臉類。
Notification::send($users, new ResetPassword($token))
這裡我們就主要了解一下第一種方法。
4. 我們開啟user.php
在最下面寫一個public 方法
public function sendPasswordResetNotification($token) {
$this->notify(new ResetPassword($token));
}
複製程式碼
5. 現在我們要配置一下.env
檔案 如下:(qq郵箱為例)
MAIL_DRIVER=smtp
MAIL_HOST=smtp.qq.com
MAIL_PORT=465
MAIL_USERNAME=675983959@qq.com
MAIL_PASSWORD=fzzbaradqwfsbfgd 填寫的是授權碼
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=675983959@qq.com
MAIL_FROM_NAME=SHOP商城
複製程式碼
注意 :如果是qq郵箱 163郵箱需要自行設定
到了這裡功能基本就能實現了。可以發郵件了...
6. 這時候我們到第一步進入的介面 填寫號郵箱點選傳送
傳送之後MAIL_FROM_ADDRESS=675983959@qq.com
在配置中的該郵箱地址 會收到一個 郵箱。 裡面都是英文的內容,我們需要把他修改成中文。
那麼開啟第二步執行的命令生成的 Notification檔案下的ResetPassword.php
public function toMail($notifiable)
{
return (new MailMessage)
->subject('重置密碼')
->line('我們已收到您的郵件請求!')
->action('如修改密碼請點選', url('/admin/password/reset', $this->token))
->line('謝謝您對我們SHOP商城的支援和信任!');
}
$this->token 這個通過構造裡傳進來 在上面 建立一個成員屬性 var $token 構造裡如下
public function __construct($token)
{
$this->token = $token;
}
複製程式碼
再還有一點模版裡的英文也可以更改 , 自行更改。
7. 效果圖如下:
8. 點選如圖的藍色按鈕 會跳到重置密碼 頁面 填好後 跳轉可能會有問題
如果是跳到了 xxx.dev/home
這個時候只需要在中介軟體middleware資料夾下的RedirectIfAuthenticated.php
將裡面的內容修改為如下圖所示。