Класс yii\filters\RateLimiter
| Наследование | yii\filters\RateLimiter » yii\base\ActionFilter » yii\base\Behavior » yii\base\Object |
|---|---|
| Реализует | yii\base\Configurable |
| Доступно с версии | 2.0 |
| Исходный код | https://github.com/yiisoft/yii2/blob/master/framework/filters/RateLimiter.php |
RateLimiter реализует алгоритм ограничения скорости на основе алгоритма leaky bucket.
Вы можете использовать RateLimiter, подключив его как поведение к контроллеру или модулю, как показано ниже,
public function behaviors()
{
return [
'rateLimiter' => [
'class' => \yii\filters\RateLimiter::className(),
],
];
}
Когда пользователь превысил лимит скорости, RateLimiter выбросит исключение yii\web\TooManyRequestsHttpException.
Обратите внимание, что RateLimiter требует, чтобы $user реализовывал интерфейс yii\filters\RateLimitInterface. RateLimiter ничего не сделает, если $user не задан или не реализует yii\filters\RateLimitInterface.
Публичные свойства
| Свойство | Тип | Описание | Определено в |
|---|---|---|---|
| $enableRateLimitHeaders | boolean | Включать ли заголовки ограничения скорости в ответ | yii\filters\RateLimiter |
| $errorMessage | string | Сообщение, отображаемое при превышении лимита скорости | yii\filters\RateLimiter |
| $except | array | Список идентификаторов действий, к которым этот фильтр не должен применяться. | yii\base\ActionFilter |
| $only | array | Список идентификаторов действий, к которым этот фильтр должен применяться. | yii\base\ActionFilter |
| $owner | yii\base\Component|null | Владелец этого поведения | yii\base\Behavior |
| $request | yii\web\Request | Текущий запрос. | yii\filters\RateLimiter |
| $response | yii\web\Response | Ответ, который должен быть отправлен. | yii\filters\RateLimiter |
| $user | yii\filters\RateLimitInterface | Объект пользователя, реализующий RateLimitInterface. | yii\filters\RateLimiter |
Публичные методы
| Метод | Описание | Определено в |
|---|---|---|
| __call() | Вызывает метод, который не является методом класса. | yii\base\Object |
| __construct() | Конструктор. | yii\base\Object |
| __get() | Возвращает значение свойства объекта. | yii\base\Object |
| __isset() | Проверяет, установлено ли свойство, т.е. определено и не равно null. | yii\base\Object |
| __set() | Устанавливает значение свойства объекта. | yii\base\Object |
| __unset() | Устанавливает свойство объекта в null. | yii\base\Object |
| addRateLimitHeaders() | Добавляет заголовки ограничения скорости в ответ | yii\filters\RateLimiter |
| afterAction() | Этот метод вызывается сразу после выполнения действия. | yii\base\ActionFilter |
| afterFilter() | yii\base\ActionFilter | |
| attach() | Присоединяет объект поведения к компоненту. | yii\base\Behavior |
| beforeAction() | Этот метод вызывается непосредственно перед выполнением действия (после всех возможных фильтров). Вы можете переопределить этот метод, чтобы выполнить последнюю подготовку к действию. | yii\filters\RateLimiter |
| beforeFilter() | yii\base\ActionFilter | |
| canGetProperty() | Возвращает значение, указывающее, можно ли прочитать свойство. | yii\base\Object |
| canSetProperty() | Возвращает значение, указывающее, можно ли установить свойство. | yii\base\Object |
| checkRateLimit() | Проверяет, превышен ли лимит скорости. | yii\filters\RateLimiter |
| className() | Возвращает полное имя этого класса. | yii\base\Object |
| detach() | Отсоединяет объект поведения от компонента. | yii\base\Behavior |
| events() | Объявляет обработчики событий для событий $owner. | yii\base\Behavior |
| hasMethod() | Возвращает значение, указывающее, определен ли метод. | yii\base\Object |
| hasProperty() | Возвращает значение, указывающее, определено ли свойство. | yii\base\Object |
| init() | Инициализирует объект. | yii\filters\RateLimiter |
Защищенные методы
| Метод | Описание | Определено в |
|---|---|---|
| getActionId() | Возвращает идентификатор действия, преобразуя yii\base\Action::$uniqueId в идентификатор, относящийся к модулю | yii\base\ActionFilter |
| isActive() | Возвращает значение, указывающее, активен ли фильтр для данного действия. | yii\base\ActionFilter |
Подробности свойств
$enableRateLimitHeaders публичное свойство
Включать ли заголовки ограничения скорости в ответ
public boolean $enableRateLimitHeaders = true
$errorMessage публичное свойство
Сообщение, отображаемое при превышении лимита скорости
public string $errorMessage = 'Rate limit exceeded.'
$request публичное свойство
Текущий запрос. Если не задан, будет использован компонент приложения request.
public yii\web\Request $request = null
$response публичное свойство
Ответ, который будет отправлен. Если не задан, будет использован компонент приложения response.
public yii\web\Response $response = null
$user публичное свойство
Объект пользователя, реализующий RateLimitInterface. Если не задан, будет взято значение из Yii::$app->user->getIdentity(false).
public yii\filters\RateLimitInterface $user = null
Подробности методов
addRateLimitHeaders() public method
Добавляет заголовки лимита запросов в ответ
| public void addRateLimitHeaders ( $response, $limit, $remaining, $reset ) | ||
|---|---|---|
| $response | yii\web\Response | |
| $limit | integer |
Максимальное количество разрешённых запросов за период |
| $remaining | integer |
Остаток разрешённых запросов в текущем периоде |
| $reset | integer |
Количество секунд ожидания, прежде чем максимальное количество разрешённых запросов обновится |
beforeAction() public method
Этот метод вызывается непосредственно перед выполнением действия (после всех возможных фильтров). Вы можете переопределить этот метод для выполнения подготовки к действию в последнюю минуту.
| public boolean beforeAction ( $action ) | ||
|---|---|---|
| $action | yii\base\Action |
Действие, которое будет выполнено. |
| return | boolean |
Выполнять ли действие дальше. |
checkRateLimit() public method
Проверяет, превышен ли лимит запросов.
| public void checkRateLimit ( $user, $request, $response, $action ) | ||
|---|---|---|
| $user | yii\filters\RateLimitInterface |
Текущий пользователь |
| $request | yii\web\Request | |
| $response | yii\web\Response | |
| $action | yii\base\Action |
Действие, которое будет выполнено |
| throws | yii\web\TooManyRequestsHttpException |
если лимит запросов превышен |
init() public method
Инициализирует объект.
Этот метод вызывается в конце конструктора после инициализации объекта заданной конфигурацией.
| public void init ( ) |
|---|
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc-2.0/yii-filters-ratelimiter.html