为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
元芳怎么了 2023-10-22 21:53:30
目前,我有以下三种状态: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目前,观点如下。
查看完整描述

1 回答

?
慕妹3146593

TA贡献1820条经验 获得超9个赞

当锁定发生时,Laravel 会触发 Illuminte\Auth\Events\Lockout 事件。众所周知,我们可以轻松地为此事件设置侦听器并处理我们想要的任何逻辑。您可以使用php artisan make:listener UserLockedOut命令简单地创建一个侦听器。然后将监听器绑定到事件服务提供者中的事件。


然后在侦听器的句柄方法中,您可以编写代码来通知管理员并更新数据库表列中用户的状态,当然,如果您想跟踪用户的状态,那么只需在数据库表中创建一列并在侦听器句柄中调整它方法。


<?php


namespace App\Listeners;


use App\User;

use App\Notifications\LockedOut;

use Illuminate\Auth\Events\Lockout;


class UserLockedOut

{

    /**

     * Handle the event.

     *

     * @param  \Illuminate\Auth\Events\Lockout  $event

     * @return void

     */

    public function handle(Lockout $event)

    {

        if ($user = User::where('email', 'admin@admin.com')->first()) {

            $user->notify(new LockedOut);

        }


        // code to update the database table column e.g

          

    }

}


查看完整回答
反对 回复 2023-10-22
  • 1 回答
  • 0 关注
  • 74 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信