【Laravel】ミドルウェアの作成、登録方法


はじめに

MVCの説明では登場しなかった「ミドルウェア」について簡単に説明します。

ミドルウェア(middleware)とは

ミドルウェアとは、ユーザーがリクエストを送信してからコントローラーで処理を行う前もしくは後に、自動的に何らかの処理を行うプログラムのことです。
ミドルウェアを利用しない場合、

リクエスト → コントローラーのアクション → レスポンス

という流れになるですが、ミドルウェアを利用すると

リクエスト → ミドルウェア(前処理) → コントローラーのアクション → ミドルウェア(後処理) → レスポンス

という流れになります。

ミドルウェアの作成

コマンドプロンプトもしくはターミナルを起動し、以下のコマンドを実行します。

php artisan make:middleware ミドルウェア名

すると、app>Http>Middleware内にファイルが作成されます。
ファイルを開いてみると、

○○Middleware.php
<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class ミドルウェア名
{
    ※ コメント部分は省略
    public function handle(Request $request, Closure $next)
    {
        return $next($request);
    }
}

と記述されているはずです。
handleメソッドは、ミドルウェアをコントローラーの前に実行するか後に実行するかで実装の仕方が変わってきます。

ミドルウェアの3つの登録方法

1) 個々のルーティングに記述する方法

web.php
Route::HTTPメソッド('URI', 'コントローラー名@アクション名')->middleware(ミドルウェア名::class);

2) グローバルミドルウェアに登録する方法
まず、app>http内にあるKernel.phpを開きます。

Kernel.php
protected $middleware = [
          .
          .
          .
];

この中にグローバルミドルウェアに登録したいミドルウェアを記述します。
ここに記述した場合は、個々のルーティングでミドルウェアを呼び出す必要がないので、->middleware(ミドルウェア名::class)の部分は記述不要です。

3) グループ化して登録する方法
2)と同じく、Kernel.phpを開きます。

Kernel.php
protected $middlewareGroups = [
          .
          .
          .
];

既に記述されているwebやapiと同じように、グループを作って以下のように記述します。

Kernel.php
'グループ名' => [
    \App\Http\Middleware\ミドルウェア名::class,
     .
     .
     .

],

ルーティングは以下のように記述します。

web.php
Route::HTTPメソッド('URI', 'コントローラー名@アクション名')->middleware('グループ名');

おわりに

何か誤りや気付き等ありましたら、ご指摘願います。