Laravel11では、フォルダごと、ごっそりミドルウェア(middleware)が消えています。
Laravel11でのミドルウェアの登録方法を解説します。
Laravel11でのミドルウェアの登録方法
まずは意外とよく使うCSRF除外設定から。
CSRF除外設定
CSRF保護から除外したいパスについて、これまではMiddleware/VerifyCsrfTokenにいれていました。Laravel11では、bootstrap/app.phpに記述します。
【bootstrap/app.php】
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<?php use Illuminate\Foundation\Application; use Illuminate\Foundation\Configuration\Exceptions; use Illuminate\Foundation\Configuration\Middleware; return Application::configure(basePath: dirname(__DIR__)) ->withRouting( web: __DIR__.'/../routes/web.php', // api: __DIR__.'/../routes/api.php', commands: __DIR__.'/../routes/console.php', // channels: __DIR__.'/../routes/channels.php', health: '/up', ) // CSRF除外 ->withMiddleware(function (Middleware $middleware) { $middleware->validateCsrfTokens(except: [ '/stripe', ]); }) ->withExceptions(function (Exceptions $exceptions) { // })->create(); |
TrimStrings除外設定
TrimStringsから除外するパスも同じように、bootstrap/app.phpに記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<?php use Illuminate\Foundation\Application; use Illuminate\Foundation\Configuration\Exceptions; use Illuminate\Foundation\Configuration\Middleware; return Application::configure(basePath: dirname(__DIR__)) ->withRouting( web: __DIR__.'/../routes/web.php', // api: __DIR__.'/../routes/api.php', commands: __DIR__.'/../routes/console.php', // channels: __DIR__.'/../routes/channels.php', health: '/up', ) // TrimStrings除外 ->withMiddleware(function (Middleware $middleware) { $middleware->trimStrings(except: [ 'password', ]); }) ->withExceptions(function (Exceptions $exceptions) { // })->create(); |
新規ミドルウェアの作成と登録
なお、ミドルウェアはこれまでどおり、下記コマンドで作成可能です。作成後は、これまでどおり、app/Http/Middlewareの中にミドルウェアファイルができます。
1 |
php artisan make:middleware TestMiddleware(ミドルウェア名) |
なおLaravel11では、ミドルウェア登録に使ったkernel.phpファイルも消えています。
今後は、作成したミドルウェアの登録場所は、bootstrap/app.phpになります。
【bootstrap/app.php】
appendして最後に実行する場合は、次のようにします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<?php use Illuminate\Foundation\Application; use Illuminate\Foundation\Configuration\Exceptions; use Illuminate\Foundation\Configuration\Middleware; return Application::configure(basePath: dirname(__DIR__)) ->withRouting( web: __DIR__.'/../routes/web.php', // api: __DIR__.'/../routes/api.php', commands: __DIR__.'/../routes/console.php', // channels: __DIR__.'/../routes/channels.php', health: '/up', ) ->withMiddleware(function (Middleware $middleware) { $middleware->append([ \App\Http\Middleware\TestMiddleware::class, ]); }) ->withExceptions(function (Exceptions $exceptions) { // })->create(); |
prependして最初に実行する場合は、appendをprependに置き換えてください。
replaceも可能です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<?php use Illuminate\Foundation\Application; use Illuminate\Foundation\Configuration\Exceptions; use Illuminate\Foundation\Configuration\Middleware; return Application::configure(basePath: dirname(__DIR__)) ->withRouting( web: __DIR__.'/../routes/web.php', // api: __DIR__.'/../routes/api.php', commands: __DIR__.'/../routes/console.php', // channels: __DIR__.'/../routes/channels.php', health: '/up', ) ->withMiddleware(function (Middleware $middleware) { replace::[Authenticate::class => CustomeAuthenticate::class], }) ->withExceptions(function (Exceptions $exceptions) { // })->create(); |
以上、Laravel11からのmiddlewareについてでした。ほかの変更点は下記をご覧ください。