[ Laravel 5.6 文檔 ] 安全系列 —— 重置密碼

      網(wǎng)友投稿 805 2025-04-02

      http://laravelacademy.org/post/8929.html


      簡(jiǎn)介

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

      大多數(shù) Web 應(yīng)用都提供了為用戶重置密碼的功能,Laravel 也不例外,Laravel 提供了用于發(fā)送密碼重置鏈接及實(shí)現(xiàn)密碼重置邏輯的便捷方法,而不需要你在每個(gè)應(yīng)用中自己重復(fù)實(shí)現(xiàn)。

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

      數(shù)據(jù)庫(kù)相關(guān)

      開(kāi)始之前,先驗(yàn)證 App\User 模型實(shí)現(xiàn)了 Illuminate\Contracts\Auth\CanResetPassword 契約。當(dāng)然,Laravel 自帶的 App\User 模型已經(jīng)實(shí)現(xiàn)了該接口,并使用 Illuminate\Auth\Passwords\CanResetPassword trait 來(lái)包含實(shí)現(xiàn)該接口需要的方法。

      生成重置令牌表遷移

      接下來(lái),用來(lái)存儲(chǔ)密碼重置令牌的表必須被創(chuàng)建,Laravel 已經(jīng)自帶了這張表的遷移,就存放在 database/migrations 目錄。所以,你所要做的僅僅是運(yùn)行遷移:

      php artisan migrate

      這張表就是 password_resets:

      ?

      路由

      Laravel 自帶了 Auth\ForgotPasswordController 和 Auth\ResetPasswordController 控制器(這兩個(gè)控制器類會(huì)通過(guò) php artisan make:auth 命令自動(dòng)生成),分別用于發(fā)送密碼重置鏈接郵件和重置用戶密碼功能。重置密碼所需的路由都已經(jīng)通過(guò) make:auth 命令自動(dòng)生成了:

      php artisan make:auth

      對(duì)應(yīng)路由定義在 Illuminate\Routing\Router 的 auth 方法中:

      ?

      視圖

      和路由一樣,重置密碼所需的視圖文件也通過(guò) make:auth 命令一并生成了,這些視圖文件位于resources/views/auth/passwords 目錄下,你可以按照所需對(duì)生成的文件進(jìn)行相應(yīng)修改。

      重置密碼

      定義好重置用戶密碼路由和視圖后,只需要在瀏覽器中通過(guò) /password/reset 訪問(wèn)這個(gè)入口路由??蚣茏詭У?ForgotPasswordController 已經(jīng)包含了發(fā)送密碼重置鏈接郵件的邏輯, ResetPasswordController 包含了重置用戶密碼的邏輯:

      [ Laravel 5.6 文檔 ] 安全系列 —— 重置密碼

      ?

      輸入注冊(cè)郵箱,點(diǎn)擊發(fā)送密碼重置鏈接,就會(huì)發(fā)送密碼重置鏈接到該郵箱:

      打開(kāi)郵箱會(huì)收到這樣一封重置密碼郵件:

      ?

      點(diǎn)擊重置密碼按鈕,即可進(jìn)入重置密碼頁(yè)面:

      ?

      填寫(xiě)表單提交之后即可重置密碼。

      密碼被重置后,用戶將會(huì)自動(dòng)登錄到應(yīng)用并重定向到 /home。你可以通過(guò)定義 ResetPasswordController 的 redirectTo 屬性來(lái)自定義密碼重置成功后的跳轉(zhuǎn)鏈接:

      protected $redirectTo = '/dashboard';

      注:默認(rèn)情況下,密碼重置令牌一小時(shí)內(nèi)有效,你可以通過(guò)修改 config/auth.php 文件中的選項(xiàng) expire 來(lái)改變有效時(shí)間。

      自定義

      自定義認(rèn)證 Guard

      在配置文件 auth.php 中,可以配置多個(gè)“guards”,以便用于實(shí)現(xiàn)基于多用戶表的獨(dú)立認(rèn)證,你可以通過(guò)重寫(xiě)內(nèi)置的 ResetPasswordController 控制器上的 guard 方法來(lái)使用你所選擇的 guard,該方法將會(huì)返回一個(gè) guard 實(shí)例:

      use Illuminate\Support\Facades\Auth;

      protected function guard()

      {

      return Auth::guard('guard-name');

      }

      自定義密碼 broker

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

      use Illuminate\Support\Facades\Password;

      /**

      * 獲取密碼重置期間所使用的broker.

      *

      * @return PasswordBroker

      * @translator laravelacademy.org

      */

      protected function broker()

      {

      return Password::broker('name');

      }

      自定義密碼重置郵件

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

      /**

      * 發(fā)送密碼重置通知.

      *

      * @param string $token

      * @return void

      */

      public function sendPasswordResetNotification($token)

      {

      $this->notify(new ResetPasswordNotification($token));

      }

      http://laravelacademy.org/post/8929.html

      Laravel PHP

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:word2010合并兩張表格的兩種方法(合并兩個(gè)表格word)
      下一篇:WPS表格怎么繪制條形圖(wps表格怎么畫(huà)圖形)
      相關(guān)文章
      亚洲婷婷在线视频| 成人区精品一区二区不卡亚洲| 亚洲 另类 无码 在线| 亚洲一区二区三区丝袜| 激情综合亚洲色婷婷五月APP| 在线观看亚洲人成网站| 亚洲久本草在线中文字幕| 久久伊人久久亚洲综合| 亚洲国产精品自在线一区二区| 亚洲AV中文无码乱人伦下载 | 亚洲综合一区国产精品| 亚洲人成人77777在线播放| 亚洲视频在线免费播放| 亚洲日本香蕉视频| 亚洲一级片在线观看| 亚洲 欧洲 自拍 另类 校园| 亚洲日本va一区二区三区| 亚洲精品精华液一区二区| 亚洲av乱码中文一区二区三区| 亚洲人片在线观看天堂无码| 亚洲成a人无码亚洲成av无码| 亚洲av午夜电影在线观看| 在线亚洲精品视频| 亚洲国产中文v高清在线观看| 亚洲免费在线观看| 国产亚洲3p无码一区二区| 亚洲第一成年男人的天堂| 精品日韩亚洲AV无码一区二区三区 | 亚洲天然素人无码专区| 欧美激情综合亚洲一二区| 亚洲情侣偷拍精品| 亚洲狠狠婷婷综合久久久久| 久久久久亚洲av无码尤物| 亚洲综合色丁香麻豆| 亚洲五月综合缴情婷婷| 亚洲狠狠色丁香婷婷综合| 一级毛片直播亚洲| 亚洲男同帅GAY片在线观看| 亚洲午夜视频在线观看| 色偷偷女男人的天堂亚洲网| 亚洲Av永久无码精品黑人|