首页 > 解决方案 > 达到失败登录尝试总数后如何隐藏登录表单?

问题描述

我想隐藏登录表单并显示错误消息,但我不能。

我试图将代码放在下面,以重写显示表单的控制器上的操作,但是检查太多登录尝试的方法似乎不起作用并且永远不会返回 true。

public function showLoginForm(Request $request)
{
    if (method_exists($this, 'hasTooManyLoginAttempts') &&
        $this->hasTooManyLoginAttempts($request) ) {
            $seconds = $this->limiter()->availableIn($this->throttleKey($request));
            return view('auth.block', array(
                'seconds' => $seconds
            ));
    }

    return view('auth.login');
}

我使用 php artisan make 管理身份验证过程:auth 登录控制器是 Laravel 生成的默认控制器,唯一的变化是显示表单的操作。

标签: laravelauthenticationlaravel-5laravel-5.8throttling

解决方案


该函数hasTooManyLoginAttempts()需要在 中$requestusername(通常是电子邮件)作为一个键来了解 是否user已达到他的最大登录尝试次数。

如果在 $request 中没有username带有值的函数无法验证user 登录尝试

因此,您无法真正知道想要get登录表单的用户是谁,只有他提交表单后才能知道谁是。

恕我直言,唯一的方法可能是向usernameGET 请求添加参数,但您应该为其提供一些解决方法:cookie、会话等。


推荐阅读