Laravel5のミドルウェアの使い方

ミドルウェアというややこしい用語のせいで皆混乱気味です。Apacheはおっさんにしてみればミドルウェアだからです。(厳密にいえば名前空間が必要です。)
Laravelのミドルウェアはちょっと語弊があるかもですが、アプリケーションに投げられたリクエストを各コントローラに渡す前に処理するときに使います。いわゆるフィルタリングの機能です。
リクエストの初期段階の処理をするのに向いています。
Laravel 5.6 リクエストのライフサイクル

ミドルウェアの使い方

コマンドで作るのが楽です。

php artisan make:middleware Foobar

app\Http\Middleware\Foobar.phpが作成されます。

<?php

namespace App\Http\Middleware;

use Closure;

class Foobar
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        return $next($request);
    }
}

この時点ではミドルウェアは機能していなくて、カーネルに登録してはじめて動きます。
(カーネルでリクエスト処理を集約しているからです。)
app\Http\Kernel.php

protected $middleware = [
    ...
    \App\Http\Middleware\Foobar::class,
];

これで準備ができました。ミドルウェアのクラスメソッドの中に適当になんか書きます。

    public function handle($request, Closure $next)
    {
        die("foobar");
        return $next($request);
    }

全部止まりました。これでOKです。

ミドルウェアの使い所


Laravel5のミドルウェアの使い方
Laravel 5.6 ミドルウェア

Last update: 2018.06.20 (水)