1

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

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

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

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

4

1 回答 1

1

信息:我将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);
于 2021-04-24T13:48:59.517 回答