Laravelのマルチ認証時にセッションファイルを分ける方法

laravelでマルチ認証時を行う際、デフォルトでの共通のセッションファイルでも使えるのですが、ログインやログアウトを行うと新規セッションが発行される挙動で、同時ログインなどで一部挙動が変になりました。

なので、各画面でログインを行う際のセッションファイルを分けていたほうが吉な気がする。

設定は簡単です。

前提条件

URLで各マルチ認証を切り分けているものとします。

https://hogehoge.jp/admin/xxxx
https://hogehoge.jp/user/xxxx

こんな感じです。

session.php

    'cookie' => env(
        'SESSION_COOKIE',
        Str::slug(env('APP_NAME', 'laravel'), '_').'_session'
    ),

    'cookie_admin' => Str::slug(env('APP_NAME', 'laravel'), '_').'_session_admin',
    'cookie_user' => Str::slug(env('APP_NAME', 'laravel'), '_').'_session_user',

わざわざenvに追記するのもあれなので(笑)adminとuser利用時のセッションが格納されるクッキー名は通常のセッション名にアンダースコアで各プレフィックスをつなげておきます。

AppServiceProvider.php

    public function boot(Request $request)
    {
        // 利用するクッキーをプレフィックスで分ける
        $url = explode('/', $request->path() );
        config(['session.cookie' => config('session.cookie_' . $url[0])]);
    }

起動時に利用するクッキー情報をurlのプレフィックスで分けてあげるだけ。

これで各認証時のセッションが格納されるクッキーが分けれます。