如何获取Laravel中的登录尝试次数?

时间:2018-11-13 00:53:32

标签: laravel-5.7

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()所期望的“钥匙”吗? “键”与Request无关吗?

其他注意事项: 很好的是,从LoginController中,我可以简单地通过$this->maxAttempts()来轻松获取$ maxAttempts值,这真的很不错。但是当前登录尝试的次数呢?将其放在同一位置不是理想的选择吗?那就是我想要得到的。

1 个答案:

答案 0 :(得分:0)

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

在LoginController中,我们必须use Illuminate\Http\Request;,然后通过方法注入,可以在方法中捕获Request $request

然后,我能够获取“ throttleKey”,这是我需要的密钥,如下所示: 在LoginController的方法主体中,$this->limiter()->hit($this->throttleKey($request));