摘要:重置密碼由于重置密碼需要發送郵件,而默認使用國外的驅動,所以需要改成國內的驅動,使用第一步忘記密碼首先看到的是的代碼使用這個顯示發送郵件和發送郵件看到是如此干凈,看來只有可能在第二部發送郵件再上一步我們知道,用到了一個里面有兩個重要的方法
laravel5.3 重置密碼
第一步:忘記密碼由于重置密碼需要發送郵件,而laravel默認使用國外的驅動,所以需要改成國內的驅動,使用sendcloud
首先看到的是AppHttpControllersAuthForgotPasswordController.php的代碼
use SendsPasswordResetEmails; //使用這個trait顯示發送郵件,和發送郵件 /** * Create a new controller instance. * * @return void */ public function __construct() { $this->middleware("guest"); }
看到是如此干凈,看來只有可能在SendsPasswordResetEmails
第二部:發送郵件再上一步我們知道,用到了一個SendsPasswordResetEmails trait,里面有兩個重要的方法:
//顯示視圖 public function showLinkRequestForm() { return view("auth.passwords.email"); } public function sendResetLinkEmail(Request $request) { //驗證郵箱地址是否有效 $this->validate($request, ["email" => "required|email"]); //發送郵件 sendResetLink是PasswordBroker 里面的一個方法 $response = $this->broker()->sendResetLink( $request->only("email") ); //根據發送郵件返回狀態 返回相應 return $response == Password::RESET_LINK_SENT ? $this->sendResetLinkResponse($response) : $this->sendResetLinkFailedResponse($request, $response); } /** * Get the broker to be used during password reset. * * @return IlluminateContractsAuthPasswordBroker 看這個返回值 */ public function broker() { return Password::broker(); }
可以看到IlluminateContractsAuthPasswordBroker這個接口實例是IlluminateAuthPasswordsPasswordBroker.php這個文件,找到上面發送郵件使用的一個方法sendResetLink,如下
public function sendResetLink(array $credentials) { //查找用戶信息 $user = $this->getUser($credentials); if (is_null($user)) { return static::INVALID_USER; } //真正發送郵件的地方,發現調用的User.php 里的方法 $user->sendPasswordResetNotification( $this->tokens->create($user) ); return static::RESET_LINK_SENT; }第三步:用戶數據模型
上一步看到發送郵件使用的是User.php這個model 里的 sendPasswordResetNotification方法
發現并沒有這個方法,看到繼承Authenticatable,進去看看:
發現了重大新聞,這個地方用了個trait CanResetPassword,看下代碼:
//找到第二步中調用的方法了 public function sendPasswordResetNotification($token) { $this->notify(new ResetPasswordNotification($token));//notify 又是什么鬼,暫時沒有注意到 }
看下ResetPasswordNotification,發現有個發送郵件的方法:
public function toMail($notifiable) { return (new MailMessage) ->line("You are receiving this email because we received a password reset request for your account.") ->action("Reset Password", url("password/reset", $this->token)) ->line("If you did not request a password reset, no further action is required."); } // url("password/reset", $this->token)) 這個重寫的時候用的上
這樣看來,我們重現一下User.php中的這個方法就應該可以改寫laravel默認發送郵件的方式了
public function sendPasswordResetNotification($token) { // 模板變量 $data = [ "url" => url("password/reset", $token), //這個地址是IlluminateAuthNotificationsResetPassword 中方法toMail 里的url,復制過來就可以 "name"=>$this->name, ]; $template = new SendCloudTemplate( "zhihu_app_register", $data ); Mail::raw( $template, function ( $message ) { $message->from( "xxxx@qq.com", "xxxx" ); $message->to( $this->email ); } ); } }
這樣我們就改了默認重置密碼發送郵件的方法了
還有很多細節,等有空再去細摳,weaving love
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/22833.html
摘要:到這里自帶的密碼重置的源碼解讀部分就完成了,下面我們就通過擴展一下實現手機號密碼找回和自定義郵件發送方式找回密碼,根據上面的代碼解析如果你看懂的話應該了解,其實我們只要擴展和就可以了。 本文最早于發表本人博客: Laravel 自帶 Auth 密碼重置源碼解析及擴展實現手機號密碼找回 Larval 自帶 Auth 密碼重置源碼解析及擴展實現手機號密碼找回 Larval技術群小伙伴問密碼...
摘要:在使用的找回密碼功能時報錯如下后來發現是配置原因,因為使用的是郵箱,需要在郵箱中配置開啟設置在郵箱中設置賬戶中打開服務中修改文件配置信息在中配置郵件發送人名稱和地址然后嘗試點下密碼重置 在使用Laravel5的Auth:ResetsPasswords找回密碼功能時報錯如下: Failed to authenticate on SMTP server with username XXX@...
摘要:本章講如何幫助健忘癥患者,重置用戶密碼。實際上不僅內置了密碼重置,還包括登錄登出密碼修改等功能。總結本章學習了使用第三方庫,高效完成了重置密碼的功能。有疑問請在杜賽的個人網站留言,我會盡快回復。 隨著技術的發展,驗證用戶身份的手段越來越多,指紋、面容、聲紋應有盡有,但密碼依然是最重要的手段。 互聯網處處都有密碼的身影,甚至變成了現代人的一種負擔。像筆者這樣的,動輒幾十個賬號密碼,忘記其...
摘要:本文來自原文鏈接歡迎作客我們的學習群在我們的底層核心技術實戰揭秘視頻中我們帶領大家使用了專業的郵件測試服務來體驗郵件發送的前前后后,下面給大家分享下利用郵箱服務器來實現的郵件發送。 本文來自pilishen.com----原文鏈接; 歡迎作客我們的php&Laravel學習群:109256050 在我們的Laravel底層核心技術實戰揭秘 視頻中,我們帶領大家使用了專業的郵件測試服務m...
摘要:它的目的是提供正確的方式進行頁面交互測試,所以可以使用去點擊按鈕或者鏈接填寫表單甚至拖放。此外,提到測試運行比更快。此次因底層架構改變較大而重命名。這個功能受到的啟發,能夠將元素簡化為可重用區域。 showImg(https://segmentfault.com/img/remote/1460000008212617); 轉自 Laravel 社區:https://laravel-ch...
閱讀 2631·2021-11-19 09:56
閱讀 878·2021-09-24 10:25
閱讀 1639·2021-09-09 09:34
閱讀 2201·2021-09-09 09:33
閱讀 1056·2019-08-30 15:54
閱讀 548·2019-08-29 18:33
閱讀 1270·2019-08-29 17:19
閱讀 511·2019-08-29 14:19