1

我想在用户达到允许的最大登录尝试次数(即用户被锁定)时发送电子邮件通知。

最好的方法是什么?我在 ThrottlesLogins 类中看到了一个 fireLockoutEvent 方法,我应该监听那个事件吗?我应该在哪里做呢?

4

1 回答 1

2

是的。为事件创建一个监听器LockoutEvent

php artisan make:listener LockoutEventListener

LockoutEventListener.php在文件夹下创建app/Listeners/LockoutEventListener。然后将LockoutEvent监听器注册到应用程序中app/providers/EventServiceProvider.php

事件服务提供者.php

protected $listen = [
    ...
     'Illuminate\Auth\Events\Lockout' => [
        'App\Listeners\LockoutEventListener',
    ],
];

然后更新事件的处理方法LockoutEvent

LockoutEventListener.php

public function handle($event)
{
    if ($event->request->has('email')) {
        $user = User::where('email', $event->request->input('email'))->first();
        if ($user && !$attemptEmailSent) {
            Mail::to($user->email)->send(...);
        }
    }
}
于 2018-04-14T18:44:35.397 回答