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

如何配置用户登录时禁止更多最大尝试次数?

如何配置用户登录时禁止更多最大尝试次数?

PHP
慕无忌1623718 2023-08-26 17:42:04
我在 Laravel 7 工作我根据需要调整loginController;最大尝试次数和衰减分钟数public function maxAttempts(){        return General::first()->max_attempts;}public function decayMinutes(){        return General::first()->decay_minutes;}如何禁止用户超过 maxAttempts示例 => 最大尝试次数 = 4我想禁止用户尝试失败 5 次$user->is_block = true
查看完整描述

2 回答

?
动漫人物

TA贡献1815条经验 获得超10个赞

您将需要为用户创建一个列来计算他们不成功的登录尝试。每次不成功的尝试时,您都会增加该值,并在达到特定限制时阻止用户。

如果登录成功,则将计数器设置为0。


查看完整回答
反对 回复 2023-08-26
?
绝地无双

TA贡献1946条经验 获得超4个赞

我测试了一下,是正确的。


首先在您的EventServiceProvider 中创建两个事件侦听器。 登录成功和登录失败

protected $listen = [

        Registered::class => [

            SendEmailVerificationNotification::class,

        ],

        'Illuminate\Auth\Events\Login' => [

            'App\Listeners\SuccessfulLogin',

        ],


        'Illuminate\Auth\Events\Failed' => [

            'App\Listeners\FailedLogin',

        ],

    ];

在成功登录中:

public function handle(Login $event)

    {

        

        $event->user->user_last_login_date = Carbon::now();

        $event->user->unsuccessful_login_count = 0;

        $event->user->save();


    }

在登录失败中:

$event->user->unsuccessful_login_count += 1 ;

        $unsuccessful_count =   General::first()->max_attempts;


        if ($event->user->unsuccessful_login_count == $unsuccessful_count ) {

            $event->user->three_attempt_timestamp = Carbon::now()->toDateString();

        }

        if ($event->user->unsuccessful_login_count > $unsuccessful_count ) {

            $event->user->is_block = 1;

        }


        $event->user->save();


查看完整回答
反对 回复 2023-08-26
  • 2 回答
  • 0 关注
  • 142 浏览

添加回答

举报

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