カテゴリ: Laravel 更新日: 2026/01/04

Laravelのミドルウェアにパラメータを渡す方法!throttleや制限設定も解説

Laravelのミドルウェアにパラメータを渡す方法(throttle:60,1 など)
Laravelのミドルウェアにパラメータを渡す方法(throttle:60,1 など)

先生と生徒の会話形式で理解しよう

生徒

「先生、Laravelのミドルウェアに数字や文字を渡して動作を変えられるって本当ですか?」

先生

「はい、ミドルウェアにはパラメータを渡すことができます。例えば、アクセス制限の回数を指定する throttle:60,1 のような形です。」

生徒

「throttle:60,1ってどういう意味ですか?」

先生

「これは1分間に60回までアクセスを許可するという意味です。throttleは『制限』という意味で、APIやログインページのアクセス制御に便利です。」

1. ミドルウェアのパラメータとは?

1. ミドルウェアのパラメータとは?
1. ミドルウェアのパラメータとは?

Laravelのミドルウェアは、リクエストを受け取ったときに処理を追加する仕組みです。パラメータを渡すことで、同じミドルウェアでも動作を変えることができます。例えば、アクセス回数の上限や時間制限など、設定値を柔軟に変更できます。

2. パラメータ付きミドルウェアの書き方

2. パラメータ付きミドルウェアの書き方
2. パラメータ付きミドルウェアの書き方

パラメータ付きミドルウェアは、ルートで指定する際にコロン(:)とカンマ(,)を使います。例えば以下のように書きます。


Route::middleware('throttle:60,1')->group(function () {
    Route::get('/api/data', 'ApiController@data');
});

この場合、throttle ミドルウェアに 60,1 というパラメータが渡されます。1分間に最大60回までアクセス可能です。

3. 自作ミドルウェアにパラメータを渡す方法

3. 自作ミドルウェアにパラメータを渡す方法
3. 自作ミドルウェアにパラメータを渡す方法

自分で作ったミドルウェアでもパラメータを受け取ることができます。例えば年齢制限のミドルウェアを作る場合を考えます。


public function handle($request, Closure $next, $minAge)
{
    if ($request->user()->age < $minAge) {
        return response('アクセス禁止', 403);
    }

    return $next($request);
}

この例では、$minAge というパラメータを受け取り、ユーザーの年齢が条件を満たさない場合はアクセスを拒否します。

4. ルートでのパラメータ指定方法

4. ルートでのパラメータ指定方法
4. ルートでのパラメータ指定方法

ルートでミドルウェアにパラメータを渡すときは、以下のように書きます。


Route::get('/restricted', 'UserController@index')
     ->middleware('check.age:18');

この場合、check.age ミドルウェアに 18 というパラメータが渡されます。ユーザーの年齢が18歳未満ならアクセスが拒否されます。

5. throttleミドルウェアの活用例

5. throttleミドルウェアの活用例
5. throttleミドルウェアの活用例

Laravelには組み込みの throttle ミドルウェアがあります。APIやログインフォームのアクセス制限に使えます。使い方の例を示します。


Route::middleware('throttle:10,1')->group(function () {
    Route::post('/login', 'AuthController@login');
});

この設定では、1分間に10回までログインリクエストが可能です。もし超えた場合は429 Too Many Requests というHTTPステータスでアクセスが拒否されます。

6. パラメータ付きミドルウェアのポイント

6. パラメータ付きミドルウェアのポイント
6. パラメータ付きミドルウェアのポイント
  • コロン(:)でミドルウェア名とパラメータを区切る
  • 複数のパラメータはカンマ(,)で区切る
  • 自作ミドルウェアでは handle メソッドの引数で受け取る
  • APIやログインなど、回数制限や条件チェックに活用できる
  • パラメータを使うことで、柔軟で再利用可能なミドルウェアが作れる

7. 実践例と注意点

7. 実践例と注意点
7. 実践例と注意点

例えば、異なるルートで異なる制限を設定したい場合、パラメータ付きミドルウェアが便利です。


Route::get('/api/free', 'ApiController@free')
     ->middleware('throttle:100,1');

Route::get('/api/premium', 'ApiController@premium')
     ->middleware('throttle:1000,1');

無料APIは1分間100回、プレミアムAPIは1分間1000回と制限を変えることができます。注意点として、パラメータの順序や型を間違えないようにしましょう。

カテゴリの一覧へ
新着記事
New1
Laravel
Laravelの認証状態をチェックする方法を完全解説!authとAuth::check()を初心者向けにやさしく説明
New2
CodeIgniter
CodeIgniterのコントローラクラスの作り方を完全ガイド!初心者でもわかる基礎から実践まで
New3
Symfony
Symfonyのフォームラベルを多言語対応!初心者でもわかる翻訳設定ガイド
New4
Laravel
Laravelでユーザー登録機能を作る方法!初心者向けにバリデーションとリダイレクトをやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelのデータベース設定方法を完全ガイド!初心者でもわかる.envファイルの使い方
No.2
Java&Spring記事人気No2
Laravel
Laravelのビューとは?Bladeテンプレートの基本を解説
No.3
Java&Spring記事人気No3
Laravel
Laravelでセッションを扱う方法!保存方法と利用例を解説
No.4
Java&Spring記事人気No4
Laravel
Laravelのルート一覧を確認する方法!初心者でもわかるphp artisan route:listの使い方
No.5
Java&Spring記事人気No5
Laravel
Laravelでルーティングを設定する方法!web.phpと基本ルートの書き方を初心者向けに徹底解説
No.6
Java&Spring記事人気No6
Laravel
LaravelでルートをBladeテンプレートに記述する方法(route関数)
No.7
Java&Spring記事人気No7
Laravel
Laravelのルートキャッシュ機能を活用してパフォーマンス改善!初心者でもわかる完全ガイド
No.8
Java&Spring記事人気No8
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)