(sanctum不使用)Laravel+VueでSession認証を作る時はKernel.phpの順番に注意

Laravel8 + Vue-cli でSPAを作成するにあたって、セッション認証の箇所でハマりました。 仕様上データベースは別サーバーなので、sanctumは使わずRedisを用いてsession認証を行います。 その際ページリロードでセッションが継続できない事態にハマってしまいました。

注意:ここでははまった箇所のメモ書き程度なので、本格的な SPAの作成手順はわかっているものとして記述しています。

状況

1、以下の処理を作成 ・ログインするとアクセストークンを作成、セッションとRedisに保存する。 ・その後リクエストが来ると、セッションから登録したキーを取得、Redisの内容と一致するかチェック ・OkならActionへ、NGなら認証エラーを返却

2、app/Http/Kernel.phpapiでもセッションが利用できるように登録

            // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
            'throttle:api',
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,

3、ログインしてmiddlewareが適用されている適当なapiを作成して叩く 4、ページを更新して再度適当なapiを叩く ・・・ここでDebugで出しているセッションが出ずにnullになっていました。

結論、app/Http/Kanel.phpに記述するapiの箇所にて throttle:api よりも上に記述する必要があった。

            \App\Http\Middleware\EncryptCookies::class,
            \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
            \Illuminate\Session\Middleware\StartSession::class,
            // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
            'throttle:api',
            \Illuminate\Routing\Middleware\SubstituteBindings::class,

取り急ぎ覚え書き。