<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                作用 通過本中間件可限定用戶在一段時間內的訪問次數,可用于保護接口防爬防爆破的目的。 安裝 ``` composer require topthink/think-throttle ``` 安裝后會自動為項目生成 conf/throttle.php 配置文件,安裝后組件不會自動啟用,需要手動設置。 開啟 組件以中間件的方式進行工作,因此它的開啟與其他中間件一樣,例如在全局中間件中使用 app/middleware.php : ``` <?php return [ \think\middleware\Throttle::class, ]; ``` 配置說明 在 config/throttle.php 配置選項: ``` <?php // 中間件配置 return [ // 緩存鍵前綴,防止鍵值與其他應用沖突 'prefix' => 'throttle_', // 緩存的鍵,true 表示使用來源ip 'key' => true, // 要被限制的請求類型, eg: GET POST PUT DELETE HEAD 'visit_method' => ['GET'], // 設置訪問頻率,例如 '10/m' 指的是允許每分鐘請求10次。值 null 表示不限制, eg: null 10/m 20/h 300/d 200/300 'visit_rate' => '100/m', // 訪問受限時返回的響應 'visit_fail_response' => function (Throttle $throttle, Request $request, int $wait_seconds) { return Response::create('Too many requests, try again after ' . $wait_seconds . ' seconds.')->code(429); }, ]; ``` 當配置項滿足以下條件任何一個時,不會限制訪問頻率: ``` key 值為 false 或 null; visit_rate 值為 null。 其中 key 用來設置緩存鍵的;而 visit_rate 用來設置訪問頻率,單位可以是秒,分,時,天,例如:1/s, 10/m, 98/h, 100/d , 也可以是 100/600 (600 秒內最多 100 次請求)。 ``` 靈活定制 示例一:針對用戶個體做限制, key 的值可以設為函數,該函數返回新的緩存鍵值(需要Session支持),例如: ``` 'key' => function($throttle, $request) { $user_id = session('user_id'); return $user_id ; }, ``` 實例二:也可以在回調函數里針對不同控制器和方法定制生成key,中間件會進行轉換: ``` 'key' => function($throttle, $request) { return '__CONTROLLER__/__ACTION__/__IP__'; }, ``` 或者直接設置: ``` 'key' => '__CONTROLLER__/__ACTION__/__IP__', ``` PS:此示例需要本中間件在路由中間件后啟用,這樣預設的替換功能才會生效。 示例三:允許在閉包內修改本次訪問頻率或臨時更換限流策略: ``` 'key' => function($throttle, $request) { $throttle->setRate('5/m'); // 設置頻率 $throttle->setDriverClass(CounterSlider::class);// 設置限流策略 return true; }, ``` 示例四:允許在路由定義中獨立配置(1.3.x 版本支持) ``` Route::group(function() { //路由注冊 })->middleware(\think\middleware\Throttle::class, [ 'visit_rate' => '20/m', 'key' => '__CONTROLLER__/__ACTION__/__IP__', ]); ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看