Laravel 5.7-如何动态触发用户验证电子邮件?

jab*_*ant 6 php laravel

当我使用注册页面进行注册时,我收到的电子邮件中的链接可以正常工作。

当我改用$user->sendEmailVerificationNotification() 我在中看到的时vendor\laravel\framework\src\Illuminate\Auth\Listeners\SendEmailVerificationNotification.php,它不起作用。

我收到了电子邮件,但是当我单击验证链接时,我被重定向到登录页面,并且用户没有得到验证。

用例:我的系统有一个超级用户,可以添加用户,我希望向该用户发送电子邮件以进行验证。

任何帮助,将不胜感激。

100*_*les 4

此答案假设您已经设置了 Laravel 的AuthenticationEmail Verification

当用户在应用程序上注册时,控制器默认使用该Illuminate\Foundation\Auth\RegistersUser特征。请注意该方法中发生的附加功能register(),还要注意生成了一个\Illuminate\Auth\Events\Registered 事件,该事件依次触发侦听器 SendEmailVerificationNotification(您当前从中获取代码的位置)。

对于您的自定义类,您可能会重用Illuminate\Foundation\Auth\RegistersUser其上的特征,但这可能会感觉很奇怪,因为您的类可能不是控制器,并且特征涉及额外的特定于控制器的逻辑。

相反,您可以尝试Illuminate\Foundation\Auth\RegistersUser::register()从新类中提取一些代码并在新类中使用它。

所以,类似于:

// If you do not yet have a new user object.
$user = \App\User::create([
    'name' => $data['name'],
    'email' => $data['email'],
    'password' => \Illuminate\Support\Facades\Hash::make($data['password']),
]);

// Fire the event now with the user you want to receive an email.
event(new \Illuminate\Auth\Events\Registered($user));
Run Code Online (Sandbox Code Playgroud)

更多信息: