Laravel

【Laravel】Middleware(ミドルウェア)の設定方法

記事内に商品プロモーションを含む場合があります

生徒さん
生徒さん
仕組みは分かったけど、Middlewareってどうやって設定するんだろう・・・?

こんな疑問を持った方への解答記事です。

 

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(ミドルウェア)の設定方法」について以下のことを解説しました。

LaravelのMiddlewareは「3種類」ある
指定のアクセスに実行(ルートミドルウェア)
指定した複数アクセスに実行(グループミドルウェア)
全アクセスに実行(グローバルミドルウェア)

冒頭でお伝えした「Middlewareの仕組み」と合わせて理解すれば、難しいものではないと思いますので、記事を参考に設定してみてください。

 

参考文献

PHPフレームワーク Laravel入門 第2版』秀和システム 掌田津耶乃

ABOUT ME
ゆう
エンジニア歴7年。 大学卒業後、フィールドエンジニア職に就くが「手に職をつけたい」と思い、未経験からWEBデザイナーに転職。 その後、「WEB制作会社」「上場企業のECサイト運用」を経て、現在は「自社開発企業」のフロントエンドエンジニアとして仕事をしています。