ユーザ用ツール

サイト用ツール


プログラム言語:php:laravel:認証:マルチ認証のセッションを分ける

差分

このページの2つのバージョン間の差分を表示します。

この比較画面にリンクする

プログラム言語:php:laravel:認証:マルチ認証のセッションを分ける [2021/05/28 11:17] (現在)
humolife 作成
行 1: 行 1:
 +====== 【Laravel 7】マルチ認証のセッションを分ける ======
 +マルチ認証を単に実装しただけでは、同じクッキーやセッションが使用されるため、同一ブラウザのタブ内で両方のログイン後の画面などを表示した際に、検索ワードなどが共有されてしまい困ることがある。\\
 +これを防ぐために、ログイン中の画面に応じてセッション名を変更し、別々に管理できるようにします。
  
 +===== .env でクッキーの名前を設定 =====
 +<code:php|.env>
 +// 以下2つを追加
 +SESSION_COOKIE=user
 +SESSION_COOKIE_ADMIN=admin
 +</code>
 +
 +===== config に管理画面用のクッキー設定を追加 =====
 +<code:php|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'
 +    ),
 +</code>
 +
 +===== 管理画面アクセスならクッキーの変更 =====
 +<code:php|app\Providers\AppServiceProvider.php>
 +    public function boot()
 +    {
 +        // 管理画面用のクッキー
 +        if (request()->is('admin*')) {
 +            config(['session.cookie' => config('session.cookie_admin')]);
 +        }
 +    }
 +</code>
 +
 +これで設定完了です。\\
 +あとは、同一ブラウザ内の別タブで、それぞれの認証にログインすると2つのクッキーが作られ、別々に管理されているのが確認できるかと思います。
 +
 +参考:[[https://qiita.com/lixwork/items/11f7463d6cf35cb46553|Laravelマルチ認証でセッション用テーブル、設定を分ける(Laravel6で確認済み)]]
プログラム言語/php/laravel/認証/マルチ認証のセッションを分ける.txt · 最終更新: 2021/05/28 11:17 by humolife