91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用Laravel怎么實現一個密碼重置功能

發布時間:2021-01-30 16:37:23 來源:億速云 閱讀:151 作者:Leah 欄目:開發技術

利用Laravel怎么實現一個密碼重置功能?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

數據庫相關

開始之前,先驗證 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));
}

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新兴县| 余庆县| 海南省| 曲阳县| 肥东县| 翁牛特旗| 静海县| 时尚| 铅山县| 湟中县| 兰考县| 石屏县| 阳江市| 德江县| 康马县| 莱西市| 阳新县| 井研县| 罗江县| 博白县| 丹棱县| 安龙县| 嘉禾县| 德格县| 汤阴县| 张家界市| 郑州市| 敦化市| 屯门区| 晋宁县| 建始县| 乌拉特后旗| 黄大仙区| 咸阳市| 金寨县| 木兰县| 兴义市| 宜春市| 兴海县| 安庆市| 修武县|