Laravel RateLimiter/throttle 增加衰减分钟数

Laravel RateLimiter/throttle increasing decay minutes

在 Laravel 中,您可以限制某些请求。例如,您可以通过中间件或 RateLimiter 将您的登录请求限制为每分钟最多 5 次尝试:

    RateLimiter::for('login', function (Request $request) {
        return (new Limit('login', '5', 1))
            ->by($request->email.$request->ip());
    });

本代码示例中,'5'表示每分钟最大请求数,1表示衰减分钟数(每次达到限制,用户将被锁定退出 1 分钟)。

但是,如何在每次达到限制时增加 decayMinutes?例如,您每次如何将此金额加倍?

信息:我正在使用 BreezeLaravel 8,它会安装 app\Requests\Auth\LoginRequest。此文件是我进行更改的地方。

为了自定义 Laravel Breeze 尝试和衰减时间,有两行重要的代码。如果你只是想找出它们:

尝试次数

RateLimiter::tooManyAttempts($this->throttleKey(), 5)

衰减时间

RateLimiter::hit($this->throttleKey());

RateLimiter::tooManyAttempts(你可以看到)将一个数字作为它的第二个参数(在5之上)这是允许某人尝试的次数。

RateLimiter::hit 接受未显示的第二个参数,我可以通过将其添加到以下内容来将我的时间延长到 5 分钟:

RateLimiter::hit($this->throttleKey(), 300);