验证电子邮件。我需要在哪里更改它?我在网上搜索了所有内容,但是由于它是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()]);
}
}
答案 0 :(得分:4)
由于您的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,
]
];
中:
$user
此侦听器检查在Laravel默认身份验证new Registered($user = $this->create($request->all()))
中作为参数传递给App\Http\Controllers\Auth\RegisterController
的{{1}}是否是特征的Illuminate\Contracts\Auth\MustVerifyEmail
的实例想要提供默认电子邮件验证并检查App\User
尚未被验证时,Laravel建议在$user
模型中使用的模型。如果所有这些都通过,它将在该用户上调用sendEmailVerificationNotification
方法:
if ($event->user instanceof MustVerifyEmail && !$event->user->hasVerifiedEmail()) {
$event->user->sendEmailVerificationNotification();
}