記事内に商品プロモーションを含む場合があります
こんな疑問を持った方への解答記事です。
middlewareとは「WEBの仕組み」であるリクエスト・レスポンスの間にある「コントローラのアクションメソッド」の前後に、何か処理を含めるためのものです。
図にもあるように、アクションメソッドの「前・後」どちらにも処理の追加が可能です。
では、どのように設定すれば良いのでしょうか?
本記事では、Middlewareの設定方法について解説していきます。
LaravelのMiddlewareは「3種類」ある
Middlewareには3種類あります。
指定した複数アクセスに実行(グループミドルウェア)
全アクセスに実行(グローバルミドルウェア)
それぞれ見ていきましょう。
事前に、以下の「Middlewareファイルが①生成・②処理記述が追加済み」であることを前提とします。
app/Http/Middleware/MyMiddleware.php
※artisanコマンド等で生成してください。
※artisanコマンドや、Middlewareファイルの記述に関しては別途記事にします。
ミドルウェアの登録・削除は全てKernel.phpで行うことに注目です。
指定のアクセスに実行(ルートミドルウェア)
最初に「ルートミドルウェア」の設定方法です。
①Kernel.phpで登録
app/Http/Kernel.phpにMiddlewareを登録します。$routeMiddlewareを検索して下さい。
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
・・・・
'mymiddleware' => \App\Http\Middleware\MyMiddleware::class, // ←追加する
]
最終行にMiddlewareを追加しています。
②web.phpで「ルート情報を指定」
Route::get('mymiddleware', 'MyController@index')
->middleware(MyMiddleware::class);
Middlewareの処理を追加したいルートに、middlewareメソッドを追加します。
これでルートミドルウェアの登録が完了です。
指定した複数アクセスに実行(グループミドルウェア)
続いて「グループミドルウェア」の設定方法です。
①Kernel.phpで「登録」
$middlewareGroups(変数)を検索します。
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
・・・・
],
'api' => [
'throttle:60,1',
・・・・
]
];
‘web’と’api’はデフォルトで設定されている「グループ名」です。
ここに好きなグループ名を追加し、登録します。
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
・・・・
],
'api' => [
'throttle:60,1',
・・・・
],
'mymiddleware' => [ // ←追加する
\App\Http\Middleware\MyMiddleware::class,
],
];
ここでは、‘mymiddleware’というグループ名で登録しました。
②web.phpで「ルート情報を指定」
Route::get('mypage', MyController@index)
->middleware('mymiddleware'); // ←追加する
先ほど追加したグループ名(mymiddleware)を指定します。
これでグループミドルウェアの登録が完了しました。
全アクセスに実行(グローバルミドルウェア)
最後に「グローバルミドルウェア」です。
①kernel.phpで登録
$middlewareを検索します。
protected $middleware = [
\App\Http\Milldeware\TrustProxies::class,
・・・・
\App\Http\Middleware\MyMiddleware::class //←追加する
]
グローバルミドルウェアはKernel.phpのみの設定です。
これで登録が完了しました。
まとめ
本記事では「【Laravel】Middleware(ミドルウェア)の設定方法」について以下のことを解説しました。
指定のアクセスに実行(ルートミドルウェア)
指定した複数アクセスに実行(グループミドルウェア)
全アクセスに実行(グローバルミドルウェア)
冒頭でお伝えした「Middlewareの仕組み」と合わせて理解すれば、難しいものではないと思いますので、記事を参考に設定してみてください。
参考文献
『PHPフレームワーク Laravel入門 第2版』秀和システム 掌田津耶乃