国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

Laravel 實現密碼重置功能

2024-05-05 00:02:25
字體:
來源:轉載
供稿:網友

簡介

想要快速實現該功能?只需要在新安裝的 Laravel 應用下運行 php artisan make:auth (如果你已經執行過此命令,可忽略),然后在瀏覽器中訪問 http://your-app.dev/register 或者其他分配給應用的 URL,該命令會生成用戶登錄注冊所需要的所有東西,包括密碼重置!

大多數 Web 應用都提供了為用戶重置密碼的功能,Laravel 也不例外,Laravel 提供了用于發送密碼重置鏈接及實現密碼重置邏輯的便捷方法,而不需要你在每個應用中自己重復實現。

注:在使用 Laravel 提供的密碼重置功能之前, User 模型必須使用了 Illuminate/Notifications/Notifiable trait。

數據庫相關

開始之前,先驗證 App/User 模型實現了 Illuminate/Contracts/Auth/CanResetPassword 契約。當然,Laravel 自帶的 App/User 模型已經實現了該接口,并使用 Illuminate/Auth/Passwords/CanResetPassword trait 來包含實現該接口需要的方法。

生成重置令牌表遷移

接下來,用來存儲密碼重置令牌的表必須被創建,Laravel 已經自帶了這張表的遷移,就存放在 database/migrations 目錄。所以,你所要做的僅僅是運行遷移:

php artisan migrate

這張表就是 password_resets :

laravel,密碼重置

路由

Laravel 自帶了 Auth/ForgotPasswordControllerAuth/ResetPasswordController 控制器(這兩個控制器類會通過 php artisan make:auth 命令自動生成),分別用于發送密碼重置鏈接郵件和重置用戶密碼功能。重置密碼所需的路由都已經通過 make:auth 命令自動生成了:

php artisan make:auth

對應路由定義在 Illuminate/Routing/Router 的 auth 方法中:

laravel,密碼重置

視圖

和路由一樣,重置密碼所需的視圖文件也通過 make:auth 命令一并生成了,這些視圖文件位于

resources/views/auth/passwords 目錄下,你可以按照所需對生成的文件進行相應修改。

重置密碼

定義好重置用戶密碼路由和視圖后,只需要在瀏覽器中通過 /password/reset 訪問這個入口路由。框架自帶的 ForgotPasswordController 已經包含了發送密碼重置鏈接郵件的邏輯, ResetPasswordController 包含了重置用戶密碼的邏輯:

laravel,密碼重置

輸入注冊郵箱,點擊發送密碼重置鏈接,就會發送密碼重置鏈接到該郵箱:

laravel,密碼重置

打開郵箱會收到這樣一封重置密碼郵件:

laravel,密碼重置

點擊重置密碼按鈕,即可進入重置密碼頁面:

laravel,密碼重置

填寫表單提交之后即可重置密碼。

密碼被重置后,用戶將會自動登錄到應用并重定向到 /home 。你可以通過定義 ResetPasswordController 的 redirectTo 屬性來自定義密碼重置成功后的跳轉鏈接:

protected $redirectTo = '/dashboard';

注:默認情況下,密碼重置令牌一小時內有效,你可以通過修改 config/auth.php 文件中的選項 expire 來改變有效時間。

自定義

自定義認證 Guard

在配置文件 auth.php 中,可以配置多個“guards”,以便用于實現基于多用戶表的獨立認證,你可以通過重寫內置的 ResetPasswordController 控制器上的 guard 方法來使用你所選擇的 guard,該方法將會返回一個 guard 實例:

use Illuminate/Support/Facades/Auth;protected function guard(){ return Auth::guard('guard-name');}

 

自定義密碼 broker

在配置文件 auth.php 中,可以配置多個密碼,以便用于重置多個用戶表的密碼 broker,同樣,可以通過重寫自帶的 ForgotPasswordController 和 ResetPasswordController 控制器中的 broker 方法來使用你所選擇的 broker:

use Illuminate/Support/Facades/Password;

/** * 獲取密碼重置期間所使用的broker. * * @return PasswordBroker * @translator laravelacademy.org */protected function broker(){  return Password::broker('name');}

自定義密碼重置郵件

你可以很方便地編輯發送密碼重置鏈接給用戶的通知類實現自定義密碼重置郵件,要實現這一功能,需要重寫 User 模型上的 sendPasswordResetNotification 方法,在這個方法中,可以使用任何你所喜歡的通知類發送通知,該方法接收的第一個參數是密碼重置 $token :

/** * 發送密碼重置通知. * * @param string $token * @return void */public function sendPasswordResetNotification($token){  $this->notify(new ResetPasswordNotification($token));}

總結

以上所述是小編給大家介紹的Laravel 實現密碼重置功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對VeVb武林網網站的支持!


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 呼伦贝尔市| 博爱县| 青阳县| 邵阳县| 潜江市| 博白县| 毕节市| 休宁县| 禹州市| 平昌县| 镇沅| 余干县| 蒲江县| 霍城县| 大同市| 文化| 大渡口区| 海原县| 祁东县| 开化县| 余江县| 东明县| 罗甸县| 祥云县| 托克逊县| 许昌县| 青岛市| 乐清市| 治县。| 天台县| 耿马| 萨迦县| 巴林右旗| 永寿县| 紫金县| 香河县| 赣榆县| 常德市| 衡东县| 桐乡市| 陇南市|