Laravel8でミドルウェアを作ってみます。
ミドルウェアはリクエストの処理前にアクセス可否などの判定などを行うことができます。
以下のコマンドでファイルを自動生成します。
php artisan make:middleware Test
app/Http/Middleware に以下の内容の Test.php が生成されます。
<?php namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; class Test { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse */ public function handle(Request $request, Closure $next) { return $next($request); } }
引数の $request にはリクエストの情報が入っているので $request->path でパスをチェックしたり、ほかにも認証情報があれば参照し、アクセスさせない場合は abort(401) や abort(403) などを return します。
処理を作成したらミドルウェアが呼び出されるよう設定します。
app/Http/Kernel.php を開き、$routeMiddleware に任意のキーで追加します。
protected $routeMiddleware = [ ... 'test' => \App\Http\Middleware\Test::class, ... ];
これで、routes/web.php などから middleware(‘test’) のように使用し、リクエスト処理前に処理を行うことができます。