没有命名空间的类 yii yii\base yii\behaviors yii\caching yii\captcha yii\console yii\console\controllers yii\console\widgets yii\data yii\db yii\db\conditions yii\db\cubrid yii\db\cubrid\conditions yii\db\mssql yii\db\mssql\conditions yii\db\mysql yii\db\oci yii\db\oci\conditions yii\db\pgsql yii\db\sqlite yii\db\sqlite\conditions yii\di yii\filters yii\filters\auth yii\grid yii\helpers yii\i18n yii\log yii\mail yii\mutex yii\rbac yii\rest yii\test yii\validators yii\web yii\widgets

Class yii\filters\RateLimiter

继承yii\filters\RateLimiter » yii\base\ActionFilter » yii\base\Behavior » yii\base\BaseObject
实现yii\base\Configurable
可用版本自2.0
源码 https://github.com/yiichina/yii2/blob/api/framework/filters/RateLimiter.php

RateLimiter implements a rate limiting algorithm based on the leaky bucket algorithm.

您可以通过将 RateLimiter 作为行为附加到控制器或模块来使用,如下所示,

public function behaviors()
{
    return [
        'rateLimiter' => [
            'class' => \yii\filters\RateLimiter::className(),
        ],
    ];
}

当用户超过其速率限制时,RateLimiter 将引发 yii\web\TooManyRequestsHttpException 异常。

请注意 RateLimiter 需要 $user 实现[RateLimitInterface]。 如果 $user 未设置或未实现 yii\filters\RateLimitInterface 则不会执行任何操作。

公共属性

隐藏继承的属性

属性类型描述被定义在
$enableRateLimitHeaders boolean 是否在响应中包含速率限制 headers yii\filters\RateLimiter
$errorMessage string 超过速率限制时显示的消息 yii\filters\RateLimiter
$except array List of action IDs that this filter should not apply to. yii\base\ActionFilter
$only array List of action IDs that this filter should apply to. yii\base\ActionFilter
$owner yii\base\Component|null The owner of this behavior yii\base\Behavior
$request yii\web\Request 当前的请求。如果未设置,则将使用 request 应用程序组件。 yii\filters\RateLimiter
$response yii\web\Response 要发送的响应。如果未设置,则将使用 response 应用程序组件。 yii\filters\RateLimiter
$user yii\filters\RateLimitInterface 实现 RateLimitInterface 的用户对象。 如果未设置,它将从 Yii::$app->user->getIdentity(false) 取值。 yii\filters\RateLimiter

公共方法

隐藏继承的方法

方法描述被定义在
__call() Calls the named method which is not a class method. yii\base\BaseObject
__construct() Constructor. yii\base\BaseObject
__get() Returns the value of an object property. yii\base\BaseObject
__isset() Checks if a property is set, i.e. defined and not null. yii\base\BaseObject
__set() Sets value of an object property. yii\base\BaseObject
__unset() Sets an object property to null. yii\base\BaseObject
addRateLimitHeaders() 将速率限制 headers 添加到响应中。 yii\filters\RateLimiter
afterAction() 执行动作后立即调用此方法。 您可以覆盖此方法以对操作执行一些后处理。 yii\base\ActionFilter
afterFilter() yii\base\ActionFilter
attach() Attaches the behavior object to the component. yii\base\Behavior
beforeAction() This method is invoked right before an action is to be executed (after all possible filters.) You may override this method to do last-minute preparation for the action. yii\filters\RateLimiter
beforeFilter() yii\base\ActionFilter
canGetProperty() Returns a value indicating whether a property can be read. yii\base\BaseObject
canSetProperty() Returns a value indicating whether a property can be set. yii\base\BaseObject
checkRateLimit() 检查是否超过了比率限额。 yii\filters\RateLimiter
className() Returns the fully qualified name of this class. yii\base\BaseObject
detach() Detaches the behavior object from the component. yii\base\Behavior
events() Declares event handlers for the $owner's events. yii\base\Behavior
hasMethod() Returns a value indicating whether a method is defined. yii\base\BaseObject
hasProperty() Returns a value indicating whether a property is defined. yii\base\BaseObject
init() Initializes the object. yii\filters\RateLimiter

受保护的方法

隐藏继承的方法

方法描述被定义在
getActionId() 通过将 yii\base\Action::$uniqueId 转换为相对于模块的 ID 来返回动作 ID。 yii\base\ActionFilter
isActive() 返回一个值,该值指示过滤器对于给定操作是否处于活动状态。 yii\base\ActionFilter

属性详情

$enableRateLimitHeaders 公共 属性

是否在响应中包含速率限制 headers

$errorMessage 公共 属性

超过速率限制时显示的消息

public string $errorMessage 'Rate limit exceeded.'
$request 公共 属性

当前的请求。如果未设置,则将使用 request 应用程序组件。

public yii\web\Request $request null
$response 公共 属性

要发送的响应。如果未设置,则将使用 response 应用程序组件。

$user 公共 属性

实现 RateLimitInterface 的用户对象。 如果未设置,它将从 Yii::$app->user->getIdentity(false) 取值。

方法详情

addRateLimitHeaders() 公共 方法

将速率限制 headers 添加到响应中。

public void addRateLimitHeaders($response, $limit, $remaining, $reset)
$response yii\web\Response
$limit integer

一段时间内允许的最大请求数

$remaining integer

当前期间内允许的剩余请求数

$reset integer

再次具有允许的最大请求数之前等待的秒数

beforeAction() 公共 方法

This method is invoked right before an action is to be executed (after all possible filters.) You may override this method to do last-minute preparation for the action.

public boolean beforeAction($action)
$action yii\base\Action

要执行的动作。

return boolean

该动作是否应继续执行。

checkRateLimit() 公共 方法

检查是否超过了比率限额。

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() 公共 方法

Initializes the object.

This method is invoked at the end of the constructor after the object is initialized with the given configuration.

public void init()