😄

Laravelのミドルウェアのメモ

2024/09/24に公開

Laravelのミドルウェアのメモ

概要

LaravelのミドルウェアはHTTPレスポンスの変更やリクエストに他する処理を行う

公式ドキュメントより

ミドルウェアは、アプリケーションに入るHTTPリクエストを検査およびフィルタリングするための便利なメカニズムを提供します。たとえば、Laravelには、アプリケーションのユーザーが認証されていることを確認するミドルウェアが含まれています。ユーザーが認証されていない場合、ミドルウェアはユーザーをアプリケーションのログイン画面にリダイレクトします。逆に、ユーザーが認証されている場合、ミドルウェアはリクエストをアプリケーションへ進めることを許可します。
ミドルウェアを追加して、認証以外にもさまざまなタスクを実行できます。たとえば、ログミドルウェアなら、アプリケーションが受信したすべてのリクエストをログへ記録できるでしょう。Laravelフレームワークには、認証やCSRF保護用のミドルウェアなど、ミドルウェアがいくつか含まれています。これらのミドルウェアはすべて、app/Http/Middlewareディレクトリにあります。

作成

コマンド1つで作れるので楽ですね

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

作成されたミドルウェアのファイルの中身はこのようになっています

<?php
namespace App\Http\Middleware;

use Closure;

class Middleware {

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

リクエストの前後で処理を行いたい場合、以下のようにするとできるらしい

<?php
namespace App\Http\Middleware;

use Closure;

class Middleware {

  public function handle($request, Closure $next)
  {
    // リクエスㇳの前に処理を行う
    $response = $next($request);
    // リクエスト後に処理を行う

    return $response;
  }
}

ミドルウェアの登録

登録はApp\Http\Kernel.phpの配列内に記述する
私の場合は$routeMiddlewareに登録した

各middleware配列の違いがまだ理解できていないので後日調べる

protected $routeMiddleware = [
    'middleware' => \App\Http\Middleware\Middleware::class,
];

web.phpで使用する

$routeMiddlewareで登録したミドルウェア名を渡すと使用できる

Route::middleware('middleware')->group(function() {
  // ルートの登録
});

Route::get('/')->middleware('middleware');

参考

最後に

間違っていることがあれば、コメントに書いていただけると幸いです。
よろしくお願いいたします。

GitHubで編集を提案

Discussion