Laravel實現找回密碼及密碼重置,詳細操作

2021-02-20 PHP開源社區

Laravel實現找回密碼及密碼重置功能在php實現與在這裡實現會有什麼區別呢,下面我們來看看Laravel中的例子,在php中就不介紹了大家都懂的。

忘記密碼是應用中常見的場景之一,Laravel5也提供了對密碼重置的支持,我們只需稍微做一下配置即可輕鬆實現重置密碼。

1、實現思路

通過給用戶註冊郵箱發送包含特定令牌的重置密碼連結,然後用戶登錄郵箱通過訪問該重置密碼連結實現密碼的重置。

2、數據表&模型

實現CanResetPasswordContract契約並使用CanResetPasswordtrait的User模型(Laravel自帶)
用於存放重置密碼令牌的表password_resets(Laravel自帶該表對應遷移文件,上一節中已一併創建)

3、創建路由

Laravel自帶了用於密碼重置的控制器Auth\PasswordController,和上一節提到的AuthController位於統一目錄下。重置密碼相關的業務邏輯都是通過該控制器中使用的ResetsPasswordstrait來實現的。下面我們在routes.php中為重置密碼定義相關路由規則:

// 發送密碼重置連結路由
Route::get('password/email', 'Auth\PasswordController@getEmail');
Route::post('password/email', 'Auth\PasswordController@postEmail');
// 密碼重置路由
Route::get('password/reset/{token}', 'Auth\PasswordController@getReset');
Route::post('password/reset', 'Auth\PasswordController@postReset');


4、創建視圖

定義好路由之後我們為get請求定義對應視圖文件,首先創建發送密碼重置連結路由對應視圖resources/views/auth/password.blade.php:

<form method="POST" action="/password/email">
    {!! csrf_field() !!}
    <div>
        Email
        <input type="email" name="email" value="{{ old('email') }}">
    </div>
    <div>
        <button type="submit">
            發送密碼重置連結
        </button>
    </div>
</form>

然後創建重置密碼路由對應視圖resources/views/auth/reset.blade.php:

<form method="POST" action="/password/reset">
    {!! csrf_field() !!}
    <input type="hidden" name="token" value="{{ $token }}">
    <div>
        Email:<input type="email" name="email" value="{{ old('email') }}">
    </div>
    <div>
        新密碼:<input type="password" name="password">
    </div>
    <div>
        確認密碼:<input type="password" name="password_confirmation">
    </div>
    <div>
        <button type="submit">
            重置密碼
        </button>
    </div>
</form>

此外我們還要創建一個額外視圖——發送密碼重置連結的郵件模板視圖resources/views/emails/password.blade.php,用於為該郵件提供視圖模板:

點擊這裡重置密碼: {{ url('password/reset/'.$token) }}

如果該郵件模板視圖文件路徑位於其他地方,不要忘了配置config/auth.php中的password.email值與新路徑對應。

5、發送郵件配置

接下來我們要做的是配置相關文件實現郵件發送功能為下一步測試做準備。

Laravel使用SwiftMailer庫提供的郵件API實現郵件操作,詳情可查看郵件文檔,這裡我們僅作簡單配置實現郵件發送,郵件配置文件是config/mail.php:

<?php
return [
    'driver' => env('MAIL_DRIVER', 'smtp'),
    'host' => env('MAIL_HOST', 'smtp.mailgun.org'),
    'port' => env('MAIL_PORT', 587),
    'from' => ['address' => null, 'name' => null],
    'encryption' => env('MAIL_ENCRYPTION', 'tls'),
    'username' => env('MAIL_USERNAME'),
    'password' => env('MAIL_PASSWORD'),
    'sendmail' => '/usr/sbin/sendmail -bs',
    'pretend' => false,
];

可見大部分配置在.env文件中設置,這裡我的.env文件配置如下:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.163.com
MAIL_PORT=25
MAIL_USERNAME=yaojinbu@163.com
MAIL_PASSWORD=mypassword
MAIL_ENCRYPTION=null

我使用的是163郵箱,其它郵箱參考對應郵箱相關設置項,並將自己的帳戶信息填寫到MAIL_USERNAME和MAIL_PASSWORD。

此外我們還要配置mail.php中的from配置如下:

'from' => ['address' => 'yaojinbu@163.com ', 'name' => 'Laravel學院'],

這裡只需要將address和.env文件中的MAIL_USERNAME值相匹配即可。至於name值就是郵箱中發件人名稱,可自定義。

做好這一步配置後,接下來即可測試密碼重置了。

6、重置密碼

在瀏覽器中訪問http://laravel.app:8000/password/email,頁面顯示如下:

Laravel 發送重置密碼郵件

在Email輸入框中填寫你的註冊郵箱,點擊「發送密碼重置連結」,然後去郵箱中查看收件箱,如果發送成功,可收到一封內容如下的密碼重置郵件:

點擊這裡重置密碼:

http://laravel.app:8000/password/reset/96c652e4885591c7ecfcb4f1ecc6f9b877ac1a2ab445e7fb45a89fdfc7283585
此時數據表password_resets中也新增了一條記錄,用於保存重置連結令牌:

Laravel保存重置密碼token

該令牌默認保存一個小時,要修有效期,可通過編輯config/auth.php中password.expire來實現。

我們將重置密碼郵件中的連結拷貝出來粘貼到瀏覽器地址欄回車,頁面顯示內容如下:

Laravel重置密碼頁面

填寫該表單後點擊重置密碼按鈕即可完成密碼重置。

密碼重置成功後,默認跳轉連結為/home,我們可以在PasswordController中通過設置$redirectTo/$redirectPath屬性的值修改該跳轉連結:

protected $redirectPath = '/profile';

這樣重置成功後會跳轉到http://laravel.app:8000/profile:

test登錄成功!

同時password_resets中的對應記錄也會被刪除。

好了,下次登錄就可以使用新密碼進行登錄認證了。

以上內容希望幫助到大家,有需要的可以添加下方二維碼進群交流學習新技術。

好文連接:

優化MYSQL查詢步驟,提高你的20%的工作效率

PHP使用swoole改造laravel應用

如果你想和PHP大神交流,添加微信,拉你入群

如果你想獲得更多學習資料,添加微信,送你資源

相關焦點

  • 利用密碼找回功能—用戶密碼重置漏洞
    高質量的安全文章,安全offer面試經驗分享盡在 # 掌控安全EDU #
  • 新商盟找回密碼操作手冊
    關於新商盟新增找回密碼功能的通知
  • 蘋果手機id密碼忘了怎麼辦 蘋果手機id密碼忘了怎麼辦怎麼找回Apple id密碼
    蘋果手機在不越獄的情況下,下載什麼東西都需要ID帳號跟密碼,才能進行下一步,操作起來確實很繁瑣,不如安卓系統那麼來得直接,下載就可以直接安裝使用;但是這一方面或許是增加拉一定的安全性吧;但是如果ID帳號丟失忘記啦,該怎麼辦?
  • 蘋果id帳號和密碼忘記了怎麼辦,快速重置Apple ID帳號密碼詳細教程
    ,那麼針對這一話題我們說說蘋果id帳號和密碼忘記了,如何快速找回AppleID帳號和重置密碼吧。蘋果apple id密碼忘記了怎麼辦?    蘋果公司對於AppleID有專門防護機制,也供給了專業的password管理系統,只要ios設備是你本人的,就能輕鬆解決蘋果id密碼忘記的問題。假設忘記AppleID密碼了,可以到AppleID管理頁面進行重置密碼操作。
  • 國外眾測之密碼找回漏洞
    密碼找回功能也是老調常談的一個功能,前段時間也寫過一篇文章是關於密碼找回的,發現總結的不是很全面。借這個機會通過展示國外眾測例子希望能對這個漏洞有個較為全面的總結一 密碼重置連結未過期當用戶請求更改密碼時,會得到一個密碼重置連結來重置密碼,該連結應該在一段時間後過期。如果沒有過期可以多次使用密碼重置連結來重置密碼,那密碼重置功能應該存在問題。
  • 安防監控設備忘記密碼如何找回?
    下方卡片關注後回復「書籍」免費贈送50本財商書籍常見的安防設備忘記密碼如何找回?這裡給大家做個總結。一般來說涉及到密碼的安防設備可以分為攝像機,錄像機,其他設備三種類型。準確的講,忘記密碼肯定是找不回的,廠家也不可能給你保存密碼,我們只能將設備恢復出廠,然後重設新密碼。
  • iPhone6s Touch ID密碼忘記了怎麼辦,ID指紋密碼找回方法
    下面天鴻成小編就給大家帶來Touch ID找回密碼的辦法,一起來看看吧。     首先在開啟 Touch ID 指紋識別功能時,需要為 iPhone 手機設置解鎖密碼,在平時如果經常使用指紋來解決,可能會導致一時忘記了原來設置的密碼。那如何重置 Touch ID密碼呢?
  • APP測試之找回密碼
    在移動互聯時代,每個人的智慧型手機上都安裝了各種各樣的APP,那我們在使用這些APP的時候都會用到找回密碼這個功能,這個功能極大的方便了用戶,但是如果這個功能沒有做好,或者對於測試工程師來說,如果沒有對這個功能測試好
  • 網易企業郵箱忘記密碼了怎麼找回?
    網易企業郵箱具有非常好的管理性和便捷性,不過有時候註冊的企業郵箱密碼不小心忘記了,這時候就需要通過具體操作來找回丟失的密碼,相信大家幾乎都遇到過郵箱密碼或管理員密碼忘記的情況
  • 蘋果Apple ID密碼忘記了?教你一招找回ID密碼!
    蘋果用戶最常見的一個問題是忘記Apple ID用戶名或密碼。這涉及到找回用戶名、密碼重置問題和答案以及重置密碼等問題。3.找回Apple ID後即可比較輕鬆地重置密碼。  4.打開瀏覽器,進入iforgot.apple.com頁面。
  • wifi密碼忘記了如何找回
    則可以通過查看手機中保存的wifi記錄,來找回wifi密碼。 華為等手機都可以掃描二維碼看到你連接成功的WiFi的無線安全密碼。相信很多朋友在上網時,都會優先考慮wifi,那麼在不知道wifi密碼的情況下,要怎麼查看呢?一起來看參考方法。
  • 蘋果Apple ID密碼忘記了?教你一招如何找回ID密碼!
    蘋果用戶最常見的一個問題是忘記Apple ID用戶名或密碼。這涉及到找回用戶名、密碼重置問題和答案以及重置密碼等問題。如果是自己的,則只需重置密碼。如果是自己的,但該郵件地址已作廢,你需要安全刪除此iCloud帳戶並將帳戶修改為現在使用的電子郵件地址。3.
  • 我的小米帳號密碼忘了如何找回呢?
    不用著急,下面小編就為大家介紹三種小米帳戶密碼找回方法,希望能幫到大家!小米帳戶密碼找回方法介紹 一、通過小米官網找回1、忘記了密碼不要著急,可以到小米官網找回;百度一下小米官網,通過連結打開官網,或直接輸入小米官方網址。
  • 【乾貨貼】蘋果Apple ID密碼忘記了?教你一招如何找回ID密碼!
    蘋果用戶最常見的一個問題是忘記Apple ID用戶名或密碼。這涉及到找回用戶名、密碼重置問題和答案以及重置密碼等問題。3.找回Apple ID後即可比較輕鬆地重置密碼。  4.打開瀏覽器,進入iforgot.apple.com頁面。
  • vivo帳戶密碼忘了?教你這樣找回!
    vivo手機多項密碼保護技術也一直深得人心。密碼保護給我們的生活帶來了便捷的同時也會因為忘記密碼造成麻煩。今天小福教你如何找回vivo手機裡各種帳號密碼吧~vivo帳戶密碼初始設置時,需要綁定郵箱和手機號碼,密碼忘記也能通過桌面上的「雲服務」或是系統設置的「帳戶與同步」菜單,進入vivo帳戶登錄界面,找回密碼輸入綁定時的郵箱和手機號即可找回。
  • 記兩次Instagram APP密碼重置POC
    漏洞獎勵之一說在前  當用戶使用手機號找回Instagram密碼時,手機會收到一個6位的數字驗證碼,用戶必須輸入這個驗證碼才能重設自己的密碼,驗證碼10分鐘內有效。因為驗證碼10分鐘內過期,經過測算,需要1000個IP來實現這種攻擊。
  • Win7忘記密碼怎麼辦? Win7密碼重置U盤製作方法!
    ,下面電腦百事網編輯今天為大家介紹一種Win7忘記密碼的解決辦法,通過U盤即可輕鬆重置Win7密碼,下面一起來看看是如何實現的吧。Win7已經超越了XP系統,成為新時期主流系統,Win7系統功能也更加強大,支持製作密碼重置盤,我們可以使用U盤甚至是我們手機內存卡來製作Win7密碼重置盤,這些功能是Windows XP系統所沒有的,以下是製作詳細步驟:⒈)首先我們準備一個U盤,當然手機內存卡也可,但建議最好使用U盤,然後將U盤插入Win7電腦中,然後進入桌面左下角,從開始--≯控制面板,如下圖:
  • 微信忘記密碼又換了手機,依然還有3種方法可以找回密碼
    如果忘記密碼了,又剛好換了手機,我們該怎麼來登錄自己的微信號呢?其實,騰訊早就為我們想好了解決辦法。總共有4種方法找回密碼,但是換了手機,手機簡訊驗證碼的方式自然就無法使用了,那麼,就還剩下3種方法可以繼續找回密碼。1、通過QQ號找回密碼①、當我們處在沒有密碼無法登錄界面時,下方有「找回密碼、緊急凍結、更多「三個菜單。選擇」更多」選項進入。
  • Apple ID密碼忘記了?1分鐘教你找回密碼!
    首先,進入Apple ID密碼重設界面,輸入註冊Apple ID郵箱,然後點擊下面的繼續。每個郵箱只能註冊一個ID,所以大家不用擔心難以找回已忘記Apple ID密碼。如果你沒有開啟兩步驗證,在新的頁面中,會出現重設密碼和重設安全問題兩個選項,我們選擇重設密碼,然後點擊繼續。
  • 【誠通手機】小米帳號密碼忘了如何找回呢?
    不用著急,下面小編就為大家介紹三種小米帳戶密碼找回方法,希望能幫到大家!小米帳戶密碼找回方法介紹 一、通過小米官網找回1、忘記了密碼不要著急,可以到小米官網找回;百度一下小米官網,通過連結打開官網,或直接輸入小米官方網址。