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に書くのかも?詳しくは調べていません。
ありがとうございました。
この記事が参加している募集
この記事が気に入ったらサポートをしてみませんか?