Laravel 节流

Throttling in Laravel

有人可以帮我解决 Laravel 的节流问题吗?现在,如果用户输入的密码错误 'x' 次,我的网站使用节流来阻止用户登录 'x' 秒。

登录后,用户将需要双因素身份验证来更新他们的信息,但我也想限制双因素身份验证,这样他们将无法更新他们的帐户。我实际上可以重用登录的限制代码来锁定用户,但问题是,当用户注销时,由于临时锁定,他们将无法登录。

我想为 Two-FA 创建一个自定义节流阀,并可能阻止用户在 'x' 秒内访问该特定路由。

我试过四处搜索,但一切都与登录有关。如果有人可以建议我一个符合我要求的包裹或提供一个简单的图。真的会对我有帮助。谢谢你的时间。

这些都在 ThrottlesLogins 特性中进行了概述,但我会尝试进一步简化它。

为用户和请求类型生成唯一密钥:

$key = '2fa:' . $user->id;

使用 Illuminate\Cache\RateLimiter class:

在对端点的每个请求上添加一个命中(增量计数)
app(RateLimiter::class)->hit($key, $timeoutInMinutes);

在处理请求之前检查是否已达到限制:

$bool = app(RateLimiter::class)->tooManyAttempts($key, $maxAttempts, $timeoutInMinutes);