php - Laravel 5.6 更改电子邮件地址重置登录限制
问题描述
laravel 的登录限制有一个奇怪的问题。我设置了变量:
public $maxAttempts = 5;
public $decayMinutes = 3;
在 Auth/LoginController.php 中,并sendLockoutResponse
像这样覆盖函数:
protected function sendLockoutResponse(Request $request) {
$seconds = $this->limiter()->availableIn(
$this->throttleKey($request)
);
$minutes = floor($seconds / 60);
$seconds = $seconds % 60;
return back()->with('authError', 'Wait ' . $minutes . ' minutes and ' . $seconds . ' seconds.');
}
当我使用错误的凭据尝试 5 次失败的登录尝试时,我可以AuthError
在页面上看到该消息。如果我继续使用相同的电子邮件地址,我会继续看到秒数和分钟数减少。但是,如果我更改电子邮件,整个油门都会重置。我还有 5 次失败的尝试。
我的问题是:如果 laravel 通过 IP 地址确定用户的登录尝试并使用缓存对其进行轮询,为什么更改电子邮件会重置登录限制?
PS我的 .env 值是:
BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
SESSION_LIFETIME=120
SESSION_SECURE_COOKIE=false
QUEUE_DRIVER=database
解决方案
Laravel 文档分享了内置节流的细节
https://laravel.com/docs/5.7/authentication#login-throttling
如您所见,IP 和电子邮件地址组合用于跟踪登录尝试
我想如果多个用户从同一个 IP 登录,他们都不会被锁定/限制
如果您希望它以不同的方式运行,则需要将其更改为使用 ID 或类似名称
推荐阅读
- gettext - 在 Weblate 中本地化 Markdown 文件的最佳方法是什么?
- r - 为多组多级数据结构中的值创建空缺失行并计算组内行之间的差异
- excel - Visual Basic - for..next 和公式
- javascript - HtmlAgilityPack - 如何从标签中获取值进入 aspx.cs
- optaplanner - Optaplanner 解决垃圾收集问题
- android - 如何在 android 中为 ViewPager 的 TextView.setText 使用 ArrayString?
- android - 凌空中的 JsonArrayRequest 不发送参数,尽管相同的代码在我的其他应用程序中运行
- go - golang中的“未解决参考错误”
- swift - 为什么我在 viewDidLoad 中同步崩溃,有人知道发生这种情况的原因吗?
- string - 从字符串中获取整数月份值