使用 RateLimiter 将 Laravel 中的速率限制为每天 x 次

问题描述 投票:0回答:1

我正在尝试将某个端点的使用限制为每个用户每天 10 次,并且我可以了解如何做到每分钟一定次数。请注意,这是在控制器内,而不是作为中间件。

    $executed = RateLimiter::attempt(
        'user-send-test-' . Auth::user()->id,
        $perDay = 10,
        function () {
            // some process
        }
    );
laravel laravel-9 symfony-ratelimiter
1个回答
1
投票

要每天使用速率限制器,请使用方法

attemp()
的第四个参数,即衰减(需要计算一次尝试的时间),但我从未测试过它。

$executed = RateLimiter::attempt(
    'user-send-test-' . Auth::user()->id,
    $perMinute = 10,
    function () {
        // some process
    },
    60*60*24 // or 86400
    );

如果您仍然遇到此示例的问题,我建议您复制

RateLimiter
类,因为它非常小并调整其代码。

© www.soinside.com 2019 - 2024. All rights reserved.