Заблокируйте пользователя на полчаса, если он превысил пределы регулирования за одну минуту (Laravel 5.6) - PullRequest
0 голосов
/ 14 сентября 2018

Я использую Throttling, и я замечаю, что вы можете разрешать запросы на номера в течение определенного времени, но я пытаюсь сделать что-то другое

, если я установлю Throttling 60: 1

такразрешено отправлять 60 запросов каждую минуту

Но возможно ли сделать так: Throttling 60: 1: 30

, как если бы пользователь сделал 60 запросов за одну минуту, а затем заблокировал его для30 минут

1 Ответ

0 голосов
/ 14 сентября 2018

Настройка промежуточного программного обеспечения дроссельной заслонки

Если мы хотим ограничить его до 5 попыток в минуту.

Route::group(['prefix' => 'api', 'middleware' => 'throttle:5'], function () {
    Route::get('people', function () {
        return Person::all();
    });
});

И если мы хотим изменить его так, чтобы, если кто-то достигнет предела,они не могут повторить попытку еще 10 минут.

Route::group(['prefix' => 'api', 'middleware' => 'throttle:5,10'], function ()     {
    Route::get('people', function () {
        return Person::all();
    });
});

Обновление

Вам необходимо добавить флаг даты и времени в db banned_at и установить его, когда будет достигнут предел скорости.установите это время, добавив 30 минут к текущему времени, и сравните его, когда пользователь обращается к маршруту с помощью промежуточного программного обеспечения.когда пользователь получает доступ в течение 30 минут после достижения ограничения скорости, время в db banned_at будет больше текущего времени, и в этом случае вы можете заблокировать его.

Обновление

есть другой способ, посмотрите, можете ли вы установить переменную $ key в классе RateLimiter здесь https://github.com/laravel/framework/blob/5.3/src/Illuminate/Cache/RateLimiter.php#L38, я не смог найти способ установить ее

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...