如果用户在 Laravel 中被锁定,请通知管理员

目前,我有以下三种状态:Afor Active、DforDisabled和Lfor Locked。我已经设置了$maxAttempts = 3,$decayMinutes = 10并将代码添加到了,LoginController以便只有活跃用户才能登录。


protected function credentials(Request $request)

{

    return array_merge($request->only($this->username(), 

        'password', 'site_id'), ['status' => 'A']);

}

但是,我不知道如何在用户连续3次使用错误密码登录后自动将状态从 更改为Active。Locked目前,观点如下。

https://img1.sycdn.imooc.com/65352991000108b204070296.jpg

元芳怎么了
浏览 116回答 1
1回答

慕妹3146593

当锁定发生时,Laravel 会触发 Illuminte\Auth\Events\Lockout 事件。众所周知,我们可以轻松地为此事件设置侦听器并处理我们想要的任何逻辑。您可以使用php artisan make:listener UserLockedOut命令简单地创建一个侦听器。然后将监听器绑定到事件服务提供者中的事件。然后在侦听器的句柄方法中,您可以编写代码来通知管理员并更新数据库表列中用户的状态,当然,如果您想跟踪用户的状态,那么只需在数据库表中创建一列并在侦听器句柄中调整它方法。<?phpnamespace App\Listeners;use App\User;use App\Notifications\LockedOut;use Illuminate\Auth\Events\Lockout;class UserLockedOut{&nbsp; &nbsp; /**&nbsp; &nbsp; &nbsp;* Handle the event.&nbsp; &nbsp; &nbsp;*&nbsp; &nbsp; &nbsp;* @param&nbsp; \Illuminate\Auth\Events\Lockout&nbsp; $event&nbsp; &nbsp; &nbsp;* @return void&nbsp; &nbsp; &nbsp;*/&nbsp; &nbsp; public function handle(Lockout $event)&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; if ($user = User::where('email', 'admin@admin.com')->first()) {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $user->notify(new LockedOut);&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; // code to update the database table column e.g&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;&nbsp; &nbsp; }}
打开App,查看更多内容
随时随地看视频慕课网APP