マルチ認証のトピックが続いていますが、同じブラウザを使用して「会員」と「管理者」の両方にログインしたらどうなるのでしょう?

ログインはブラウザのクッキーを使用して、サーバーのセッションと繋がっています。Laravelはそれぞれに違うセッション、違うクッキーを使用するのでしょうか?それとも同じセッションで違う情報を保持するのでしょうか?興味ありませんか?

ということで、便利なツールの紹介とともに、認証のセッションがどうなっているかチェックしてみましょう。

ここで紹介するツールはDebugarというLaravelのためのツールです。

これをインストールすると、画面下にDebugarの情報パネルが表示され、実行したLaravelの様々な情報を見ることができます。

例えば、以下は会員のログイン成功直後の画面ですが、実行したDBのクエリーを見ることができます。DBテーブルusersに対するクエリーがあります。

debugbar-login

このツールのインストールはとても簡単です(GitHubにリポあります)。

まず、以下を実行します。

composer require barryvdh/laravel-debugbar

composer.jsonが更新されライブラリがダウンロードされインストールされます。

次に、config/app.phpに以下を追加します。

...
   'providers' => [
...
       Barryvdh\Debugbar\ServiceProvider::class,
   ],

   'aliases' => [
...
      'Debugbar' => Barryvdh\Debugbar\Facade::class,
   ],
];

これで完了です。

先の会員ログインを実行では、DBのクエリーの情報を見ることができましたが、セッションはどうなのでしょう?

debugbar-session
赤丸の部分がセッションの情報を見るボタンです。そして赤の四角の部分が、会員が認証されていることを示す情報です。login-user..の部分です。

さて、同じブラウザでもう1つタブを作成して今度は、管理画面にログインしてみましょう。以下が、ログイン成功後のセッション値です。

debuggar-session2

値が増えていますね。しかし、今度は、login-admin..と違う名前となっていますね。

つまり、セッションの中でguardの値をセッションの変数名として使い分けているわけです。

By khino