マルチ認証を単に実装しただけでは、同じクッキーやセッションが使用されるため、同一ブラウザのタブ内で両方のログイン後の画面などを表示した際に、検索ワードなどが共有されてしまい困ることがある。
これを防ぐために、ログイン中の画面に応じてセッション名を変更し、別々に管理できるようにします。
.env
// 以下2つを追加 SESSION_COOKIE=user SESSION_COOKIE_ADMIN=admin
config\session.php
'cookie' => env(
'SESSION_COOKIE',
Str::slug(env('APP_NAME', 'laravel'), '_').'_session'
),
// 追加(管理画面用)
'cookie_admin' => env(
'SESSION_COOKIE_ADMIN',
Str::slug(env('APP_NAME', 'laravel'), '_').'_session_admin'
),
app\Providers\AppServiceProvider.php
public function boot()
{
// 管理画面用のクッキー
if (request()->is('admin*')) {
config(['session.cookie' => config('session.cookie_admin')]);
}
}
これで設定完了です。
あとは、同一ブラウザ内の別タブで、それぞれの認証にログインすると2つのクッキーが作られ、別々に管理されているのが確認できるかと思います。