Laravel10 レート制限(アクセス回数制限)をする方法

5分に3回までのアクセスを許可する場合

Route::middleware('throttle:3,5')->group(function () {
    Route::get('/chatemb', [App\Http\Controllers\User\ChatEmbController::class, 'index'])->name('chatemb.index');
});

レート制限状況の確認方法

レート制限に関する情報はレスポンスヘッダーで確認可能。

1.開発者ツールを起動

2.「Network」-> 該当のリクエストを選択 ->「Headers」をクリックすると以下が表示される。
・X-RateLimit-Limit : 許可された最大リクエスト数
・X-RateLimit-Remaining: 残りのリクエスト数
・X-RateLimit-Reset : レート制限がリセットされる時間のUnixタイムスタンプ

開発者ツール レート制限状況の確認方法

レート制限に引っかかった場合

HTTPステータスコード429(Too Many Requests)が返され、Laravelだと以下のような表示になる。

レート制限時のメッセージをカスタマイズしたい場合

app/Exceptions/Handler.phpに以下を追記すればOK。

    public function render($request, Throwable $exception)
    {
        if ($exception instanceof \Illuminate\Http\Exceptions\ThrottleRequestsException) {
            return response()->json([
                'message' => 'リクエストが多すぎます。少し待ってから再試行してください。',
            ], 429, [], JSON_UNESCAPED_UNICODE);
        }

        return parent::render($request, $exception);
    }

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です