首页 > 解决方案 > 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

标签: phplaravelauthenticationloginthrottling

解决方案


Laravel 文档分享了内置节流的细节

https://laravel.com/docs/5.7/authentication#login-throttling

如您所见,IP 和电子邮件地址组合用于跟踪登录尝试

我想如果多个用户从同一个 IP 登录,他们都不会被锁定/限制

如果您希望它以不同的方式运行,则需要将其更改为使用 ID 或类似名称


推荐阅读