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