Laravel 5.2 の新機能シリーズ -- アクセス頻度を制限するミドルウェア スロットルの使用

WBOY
リリース: 2016-06-20 12:36:04
オリジナル
1599 人が閲覧しました

1. アクセス頻度制限の概要

頻度制限は、独立したリクエスターによる特定の API に対するリクエストの頻度を制限するために API でよく使用されます。たとえば、頻度制限を 1 分あたり 1000 回に設定した場合、1 分以内にこの制限を超えると、サーバーは 429: Too Many Attempts 応答を返します。

通常、周波数制限を実装する適切にコーディングされたアプリケーションは、X-RateLimit-Limit、X-RateLimit-Remaining、および Retry-After (制限に達した場合のみ) の 3 つの応答ヘッダーも返します。ヘッダーの後)。 X-RateLimit-Limit は、指定された時間内に許可されるリクエストの最大数を示します。X-RateLimit-Remaining は、指定された期間内に残っているリクエストの数を示します。 (s)。

注: 各 API は独自の頻度制限期間を選択します。GitHub は 1 時間を選択し、Twitter は 15 分を選択し、Laravel ミドルウェアは 1 分を選択します。

2. Laravel のアクセス頻度制限ミドルウェアの使い方

Laravel 5.2 の新機能のうち、新しいミドルウェア スロットルを使用することができます。まず、このミドルウェアの使用法を見てください:

Route::group(['prefix'=>'api'],function(){    Route::get('users',function(){        return \App\User::all();    });});
ログイン後にコピー

次に、それにミドルウェア スロットルを追加し、デフォルトで 1 分あたり 60 回の試行制限を設定します。 1 分間に 60 回の訪問後:

Route::group(['prefix'=>'api','middleware'=>'throttle'],function(){    Route::get('users',function(){        return \App\User::all();    });});
ログイン後にコピー

API/users ルートにアクセスすると、次のような応答ヘッダーが表示されます:

この応答は次のことを意味します。

  • リクエストは成功しました (ステータスコードは 200)
  • 1 分間に 60 回のみアクセスできます
  • この期間中はまだアクセスできます 57 回アクセスしました

訪問回数が 60 回を超えた場合、応答ヘッダーは次のようになります。

同時に、応答コンテンツのテキストは次のようになります。 Too Many試み。

44 秒後に再試行すると、ページは通常のアクセスを再開します。

3. カスタム スロットル ミドルウェア

次に、アクセスを 1 分あたり 5 回に制限します。指定された制限に達した後に待機時間を変更したい場合は、次のようにカスタマイズできます:

Route::group(['prefix'=>'api','middleware'=>'throttle:5'],function(){    Route::get('users',function(){        return \App\User::all();    });});
ログイン後にコピー

Route::group(['prefix'=>'api','middleware'=>'throttle:5,10'],function(){    Route::get('users',function(){        return \App\User::all();    });});
ログイン後にコピー
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート