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
答案 0 :(得分:0)
Laravel文档共享内置节流的细节
https://laravel.com/docs/5.7/authentication#login-throttling
您可以阅读IP和电子邮件地址组合来跟踪登录尝试
我想,如果多个用户从同一个IP登录,那么他们都不会被锁定/限制
如果您希望ID采取不同的操作,则需要将其更改为使用ID或类似名称