【问题标题】:Laravel RateLimiter/throttle increasing decay minutesLaravel RateLimiter/throttle 增加衰减分钟
【发布时间】:2021-05-12 02:40:55
【问题描述】:

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

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

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

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

【问题讨论】:

  • 用你想要的行为创建一个新的Limit
  • 感谢@N69S 的回复。我正在考虑实现它,但 Laravel 没有提供开箱即用的功能?

标签: laravel authentication throttling laravel-sanctum laravel-fortify


【解决方案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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-09
    • 2014-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-09
    • 1970-01-01
    相关资源
    最近更新 更多