jixinyu 2016-02-02 11:20:39 4282次浏览 2条回复 0 0 0
这三个方法不被执行

public function getRateLimit($request, $action){
    
}
public function loadAllowance($request, $action){
   
}
public function saveAllowance($request, $action, $allowance, $timestamp){
  
}
  • 回复于 2016-12-28 11:51 举报

    需要写上一段代码,进去就调用啊,看下面

    public function behaviors() {

        $behaviors = parent::behaviors();
        //这个是执行速率限制的
        $behaviors['rateLimiter'] = [
            'class' => RateLimiter::className(),
            'enableRateLimitHeaders' => true,
        ];
        return $behaviors;
    

    }

  • 回复于 2019-09-30 11:27 举报
    1. user组件指定的类(user identity class)是否继承实现 yii\filters\RateLimitInterface 接口?
    2. 控制器中行为(behaviors)中是否配置一个行为过滤器( yii\filters\RateLimiter)来执行速率限制检查,如下1. ?

      如果你继承的控制器是 yii\rest\Controller 则无需配置一个行为过滤器来执行速率限制检查,因为yii\rest\Controller中已默认添加,只要identity实现了接口,自动使用。但是如果你需要配置其他信息。如下 2.

        // 1.  
        public function behaviors()
        {
          return [
              'rateLimiter' => [
                  'class' => \yii\filters\RateLimiter::className(),
              ],
          ];
        }
        
        // 2.
        public function behaviors()
        {
            $behaviors = parent::behaviors();
            $behaviors['rateLimiter']['enableRateLimitHeaders'] = false;
            return $behaviors;
        }
    
您需要登录后才可以回复。登录 | 立即注册