因为您的User
模型使用Illuminate\Auth\MustVerifyEmail
您可以覆盖该方法sendEmailVerificationNotification
,该方法是通过调用该方法通知创建的用户notify
并作为参数传递Notifications\MustVerifyEmail
该类的新实例的方法。
您可以创建一个自定义通知,它将作为参数传递给模型$this->notify()
中的sendEmailVerificationNotification
方法User
:
public function sendEmailVerificationNotification()
{
$this->notify(new App\Notifications\CustomVerifyEmail);
}
在您的CustomVerifyEmail
通知中,您可以定义route
处理验证的方式以及它将采用的所有参数。
当新用户注册时,Illuminate\Auth\Events\Registered
会在 中发出一个事件,App\Http\Controllers\Auth\RegisterController
并且该事件有一个Illuminate\Auth\Listeners\SendEmailVerificationNotification
在 中注册的侦听器App\Providers\EventServiceProvider
:
protected $listen = [
Registered::class => [
SendEmailVerificationNotification::class,
]
];
此侦听器检查在 Laravel 默认身份验证中$user
作为参数传递给的是否是 Laravel 建议在模型中使用的特征的实例,当您想提供默认电子邮件验证并检查还没有已验证。如果所有这些都通过,它将调用该用户的方法:new Registered($user = $this->create($request->all()))
App\Http\Controllers\Auth\RegisterController
Illuminate\Contracts\Auth\MustVerifyEmail
App\User
$user
sendEmailVerificationNotification
if ($event->user instanceof MustVerifyEmail && !$event->user->hasVerifiedEmail()) {
$event->user->sendEmailVerificationNotification();
}