Laravel 5.8 - ограничение скорости на IP - PullRequest
0 голосов
/ 11 июля 2019

Я использую Laravel 5.8 для обслуживания API с включенным стандартным регулированием:

        'api' => [
            'throttle:60,1',
            'bindings',
        ],

Я понял, что это ограничение скорости не применяется к конкретному IP. Вместо этого он действует как «глобальное» регулирование на общественных маршрутах.

Что-то я упустил из виду или это ожидаемое поведение?

Если это ожидается - как я могу включить ограничение скорости "на IP" на моих маршрутах?

1 Ответ

2 голосов
/ 11 июля 2019

Я понял, что это ограничение скорости не применяется к конкретному IP.Вместо этого он действует как «глобальное» регулирование на общественных маршрутах.

Это неверно.

https://github.com/laravel/framework/blob/5.8/src/Illuminate/Routing/Middleware/ThrottleRequests.php#L94

protected function resolveRequestSignature($request)
{
    if ($user = $request->user()) {
        return sha1($user->getAuthIdentifier());
    }

    if ($route = $request->route()) {
        return sha1($route->getDomain().'|'.$request->ip());
    }

    throw new RuntimeException('Unable to generate the request signature. Route unavailable.');
}

Посмотрите внимательно на дваif заявления.Если пользователь присутствует, дроссельная клавиша основана на его идентификаторе пользователя.Если пользователь не присутствует, идентификатор включает $request->ip().Запрос с другого IP-адреса попадает в другое ограничение.

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