首页 > 解决方案 > 如何获取 Laravel 中的登录尝试次数?

问题描述

Laravel 5.7 版 -

我目前正在尝试获取登录尝试次数。Laravel 的文档没有为此提供指南。但我认为通过回溯所有被调用的方法,我越来越接近于自己找到答案。

无论如何,我的目标是在锁定之前显示“尝试登录/最大登录尝试”的数量。

在 Auth\LoginController 中,我可以轻松获取 maxAttempts 的数量,甚至可以设置我喜欢的最大尝试次数:

protected $maxAttempts = 3;

伟大的。所以我创建了一个函数来获取登录尝试的详细信息:

public function getCurrentAttempts() {
    $limiter = $this->limiter();

    $login_attempts = array(
        // gets the number of current login attempted
        'currentAttempts' => $limiter->hit('user'),

        // get the number of max attempts allowed
        'maxAttempts' => $this->maxAttempts(),

        // return 1 or 0 if current login attempts reached max attempts
        'locked' => $this->limiter()->tooManyAttempts('user', $this->maxAttempts())
    );

    return view('auth.login')->withLoginAttempts(
        $login_attempts
    );
}

请注意:

$this->limiter()->hit(key)<<< 需要一个密钥。我真的不知道它期待什么样的钥匙。帮助任何人?我输入了“用户”,出于某种原因,我向我发送了正确的尝试次数。但这是正确的吗?那$limiter->hit()是期待的“钥匙”吗?“密钥”与请求无关吗?

其他需要注意的事项:很好,从 LoginController 我可以轻松地通过简单地获得 $maxAttempts 值$this->maxAttempts(),这真的很好。但是当前登录尝试的次数呢?把它放在同一个地方不是很理想吗?这就是我想要得到的。

标签: laravel-5.7

解决方案


多次阅读 Laravel 文档后,我开始尝试框架中已经内置的各种类,以实现我的目标(获取当前登录尝试次数)

在LoginController中我们必须use Illuminate\Http\Request;再通过方法注入,Request $request才能在方法中被捕获。

然后我能够得到“throttleKey”,这是我需要的键:在 LoginController 的方法体中,$this->limiter()->hit($this->throttleKey($request));


推荐阅读