成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

laravel 用戶發(fā)送郵件重置密碼

OBKoro1 / 2971人閱讀

摘要:重置密碼由于重置密碼需要發(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

相關(guān)文章

  • Laravel自帶Auth 密碼重置源碼解析及擴(kuò)展實(shí)現(xiàn)手機(jī)號密碼找回

    摘要:到這里自帶的密碼重置的源碼解讀部分就完成了,下面我們就通過擴(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ù)群小伙伴問密碼...

    elliott_hu 評論0 收藏0
  • 解決Laravel5.1中如何配置QQ發(fā)送郵件

    摘要:在使用的找回密碼功能時(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@...

    marek 評論0 收藏0
  • Django搭建個(gè)人博客:重置用戶密碼

    摘要:本章講如何幫助健忘癥患者,重置用戶密碼。實(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è)賬號密碼,忘記其...

    mumumu 評論0 收藏0
  • 使用qq郵箱服務(wù)器來實(shí)現(xiàn)laravel郵件發(fā)送

    摘要:本文來自原文鏈接歡迎作客我們的學(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...

    xumenger 評論0 收藏0
  • Laravel 5.4 正式發(fā)布

    摘要:它的目的是提供正確的方式進(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...

    Vultr 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<