laravel-5.7 - 如何获取 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 文档后,我开始尝试框架中已经内置的各种类,以实现我的目标(获取当前登录尝试次数)
在LoginController中我们必须use Illuminate\Http\Request;
再通过方法注入,Request $request
才能在方法中被捕获。
然后我能够得到“throttleKey”,这是我需要的键:在 LoginController 的方法体中,$this->limiter()->hit($this->throttleKey($request));
推荐阅读
- vscode-tasks - 如何将新版本的终端更改为旧版本?
- laravel - 用于 camelCase 属性的 Laravel 访问器
- c# - CSharp 代码生成器给出 System.PlatformNotSupportedException
- api - 物联网云服务器 P2P
- python - 对重新排序 Dict 或 OrderedDict 的能力感到困惑
- git - 无法使用 Sourcetree 克隆存储库
- cloud-foundry - CF 市场未找到服务产品
- prolog - maplist 仅适用于列表列表的第一个列表?
- javascript - 我应该使用 Python 还是 Javascript 来使用 Django 构建基于文本的冒险?
- r - 在ggplot 2中的x轴上将时间从几分钟缩放到几小时