Laravel ミドルウェアとルーティングについて

作成日:2024-03-06, 更新日:2024-03-07

「app/Http/Kernel.php」の中にある各設定

  • $middleware は、グローバルミドルウェア。無条件にすべてのリクエストに対して適用
    • $middlewareGroups[web]は、ルートミドルウェア。ルーティングのwebで設定されているリクエストに対して適用
    • $middlewareGroups[api]は、ルートミドルウェア。ルーティングのapiで設定されているリクエストに対して適用
  • $middlewareAliasesは、ルートミドルウェア。ルーティングで「Route::middleware('xxx')」内で設定されているリクエストに対して適用

ルーティングでミドルウェアを適用

対象URLに対してミドルウェアを設定

Route::get('/hoge', 'HogeController@index')->middleware('zebra');

複数のミドルウェアをセットしたい

middleware()の引数を配列にする

Route::get('/hoge', 'HogeController@index')->middleware(['zebra', 'xxx']);

複数の対象URLに対してミドルウェアを設定

Route::middleware('zebra')->group(function () {
    Route::get('/hoge', 'HogeController@index');
    Route::get('/foo', 'FooController@index');
    Route::get('/bar', 'BarController@index');
});

複数のミドルウェアをセットしたい

middleware()の引数を配列にする

Route::middleware(['zebra', 'xxx'])->group(function () {
    Route::get('/hoge', 'HogeController@index');
    Route::get('/foo', 'FooController@index');
    Route::get('/bar', 'BarController@index');
});

複数の対象URLに対してミドルウェアを設定し、その中で特定のURLに対して別のミドルウェアを設定

Route::middleware('zebra')->group(function () {
    Route::get('/hoge', 'HogeController@index');
    Route::get('/foo', 'FooController@index')->middleware('whole');
    Route::get('/bar', 'BarController@index');
});

複数の対象URLに対してミドルウェアを設定し、その中で複数のURLに対して別のミドルウェアを設定

Route::middleware('zebra')->group(function () {
    Route::get('/hoge', 'HogeController@index');
    Route::middleware('whole')->group(function () {
        Route::get('/foo', 'FooController@index');
        Route::get('/bar', 'BarController@index');
    });
});