【问题标题】:Changing the “VerifyEmail” class for custom parameter in verification link in mail for method verificationUrl() in verification email in laravel 5.7在 laravel 5.7 的验证电子邮件中更改邮件验证链接中自定义参数的“VerifyEmail”类,用于验证电子邮件中的方法 verifyUrl()
【发布时间】:2019-02-27 10:12:11
【问题描述】:

laravel 5.7 附带的验证电子邮件。我需要如何以及在哪里更改它?我已经在网上搜索过,但是因为它是5.7中的全新功能,所以我找不到答案。你能帮我吗?提前致谢。

基本上该类在 Illuminate\Auth\Notifications 下

我想重写其中一种方法:

 class VerifyEmail extends Notification
        {
          // i wish i could override this method
           protected function verificationUrl($notifiable)
            {
             return URL::temporarySignedRoute('verification.verify', Carbon::now()->addMinutes(60), ['id' => $notifiable->getKey()]);
            } 
        }

【问题讨论】:

    标签: laravel email-verification laravel-5.7


    【解决方案1】:

    因为您的User 模型使用Illuminate\Auth\MustVerifyEmail,您可以覆盖方法sendEmailVerificationNotification,该方法通过调用方法notify 来通知创建的用户,并将@ 的新实例作为参数传递987654326@班级。

    您可以在User 模型中的sendEmailVerificationNotification 方法中创建一个自定义通知,该通知将作为参数传递给$this->notify()

    public function sendEmailVerificationNotification()
    {
        $this->notify(new App\Notifications\CustomVerifyEmail);
    }
    

    并且在您的CustomVerifyEmail 通知中,您可以定义将通过其处理验证的route 以及它将采用的所有参数。

    当新用户注册时,Illuminate\Auth\Events\Registered 事件会在App\Http\Controllers\Auth\RegisterController 中发出,并且该事件具有在App\Providers\EventServiceProvider 中注册的侦听器Illuminate\Auth\Listeners\SendEmailVerificationNotification

    protected $listen = [
        Registered::class => [
            SendEmailVerificationNotification::class,
        ]
    ];
    

    此侦听器检查 $user(在 Laravel 默认身份验证 App\Http\Controllers\Auth\RegisterController 中作为参数传递给 new Registered($user = $this->create($request->all())))是否是 Illuminate\Contracts\Auth\MustVerifyEmail 的实例,这是 Laravel 建议在 @ 中使用的特征987654342@ 当您想要提供默认电子邮件验证时建模并检查 $user 是否尚未验证。如果一切都通过了,它将调用该用户的sendEmailVerificationNotification 方法:

    if ($event->user instanceof MustVerifyEmail && !$event->user->hasVerifiedEmail()) {
            $event->user->sendEmailVerificationNotification();
    }
    

    【讨论】:

    • 工作正常!在对自定义电子邮件验证进行上述更改后@YvesKipondo
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-18
    • 1970-01-01
    • 2019-03-05
    • 2020-03-18
    • 1970-01-01
    相关资源
    最近更新 更多