マルチ認証のトピックが続いていますが、同じブラウザを使用して「会員」と「管理者」の両方にログインしたらどうなるのでしょう?
ログインはブラウザのクッキーを使用して、サーバーのセッションと繋がっています。Laravelはそれぞれに違うセッション、違うクッキーを使用するのでしょうか?それとも同じセッションで違う情報を保持するのでしょうか?興味ありませんか?
ということで、便利なツールの紹介とともに、認証のセッションがどうなっているかチェックしてみましょう。
ここで紹介するツールはDebugarというLaravelのためのツールです。
これをインストールすると、画面下にDebugarの情報パネルが表示され、実行したLaravelの様々な情報を見ることができます。
例えば、以下は会員のログイン成功直後の画面ですが、実行したDBのクエリーを見ることができます。DBテーブルusersに対するクエリーがあります。
このツールのインストールはとても簡単です(GitHubにリポあります)。
まず、以下を実行します。
composer require barryvdh/laravel-debugbar
composer.jsonが更新されライブラリがダウンロードされインストールされます。
次に、config/app.php
に以下を追加します。
... 'providers' => [ ... Barryvdh\Debugbar\ServiceProvider::class, ], 'aliases' => [ ... 'Debugbar' => Barryvdh\Debugbar\Facade::class, ], ];
これで完了です。
先の会員ログインを実行では、DBのクエリーの情報を見ることができましたが、セッションはどうなのでしょう?
赤丸の部分がセッションの情報を見るボタンです。そして赤の四角の部分が、会員が認証されていることを示す情報です。login-user..
の部分です。
さて、同じブラウザでもう1つタブを作成して今度は、管理画面にログインしてみましょう。以下が、ログイン成功後のセッション値です。
値が増えていますね。しかし、今度は、login-admin..
と違う名前となっていますね。
つまり、セッションの中でguard
の値をセッションの変数名として使い分けているわけです。