見出し画像

Laravelのセッションブロッキングがroutesに記載しただけでは動作しなかった件

お疲れ様です。

セッションブロッキング
上記公式ドキュメントにあるように、

// routes/***.php

Route::post('/profile', function () {
    // ...
})->block($lockSeconds = 10, $waitSeconds = 10)

Route::post('/order', function () {
    // ...
})->block($lockSeconds = 10, $waitSeconds = 10)

->block() とメソッドチェーンするだけで動作するはずなんですが、動作しませんでした。
デバッグしたら、StartSessionミドルウェアで$request->route()が常にnullになってしまっていたため、該当の処理に辿り着いていなかったのです。

そこで調べたところ、以下の回答を発見。

app/Http/Kernel.phpに以下の設定を追加。

// app/Http/Kernel.php

    protected $middlewareGroups = [
...
        'api' => [
...
            \Illuminate\Session\Middleware\StartSession::class, // add
        ],
    ];

App\Http\Kernel::$middlewareGroupsの設定が必要でした!
App\Http\Kernel::$middlewareだけではダメなんだそうです。

上記の回答内では、Kernel::$routeMiddleware に書けと書かれていますが、
それでは動作しませんでした。
グルーピングされている場合はmiddlewareGroupsに書くのかも?詳しくは調べていません。

ありがとうございました。


この記事が参加している募集

仕事について話そう

この記事が気に入ったらサポートをしてみませんか?