ログインとログアウトの機能が実装できたので,ログイン中のユーザの情報(つまりセッション情報)がどのように管理されているのかをここで確認しておこう.
まず,誰もログインしていない状態でデータベースの django_session テーブルの中身を確認します.次の通り,django_session テーブルにデータは一切ありません.
(base) C:\Users\lecture\Documents\django\django_comment_auth>sqlite3 db.sqlite3 ⏎ SQLite version 3.36.0 2021-06-18 18:36:39 Enter ".help" for usage hints. sqlite> .schema django_session ⏎ CREATE TABLE IF NOT EXISTS "django_session" ( "session_key" varchar(40) NOT NULL PRIMARY KEY, "session_data" text NOT NULL, "expire_date" datetime NOT NULL ); CREATE INDEX "django_session_expire_date_a5c62663" ON "django_session" ("expire_date"); sqlite> .headers ON ⏎ sqlite> select * from django_session; ⏎ sqlite>
Windows 10 の Edge を使い,user_a でログインします.ログインしている状態で django_session テーブルの中身を確認します.セッションキーが 5nteeg7y9yqta4i3z7lp2pczxh8frhat
になっていることが確認できます.この値はクライアント側である Web ブラウザ (Edge) にも保存されます.また,有効期限がログインした日時のちょうど2週間後の値になっていることも確認できます.
sqlite> select * from django_session; ⏎ session_key|session_data|expire_date 5nteeg7y9yqta4i3z7lp2pczxh8frhat|.eJxVjMsOwiAQRf-FtSFAywAu3fsNZIaHVA0kpV0Z_11JutDtPefcF_O4b8XvPa1-iezMJDv9boThkeoA8Y711nhodVsX4kPhB-382mJ6Xg7376BgL9-apHCo0WhyUxRWSgshTQpzDskoDW4QgFlLQnCOjIoih8kKAwloduz9AdNqN1c:1oHduY:UJytk6CSEfAS25iF0yMN1esR8-Zt7enWfBE8so_w6oc|2022-08-13 13:17:10.414552 sqlite>
Edge では「設定」→「Cookie とサイトのアクセス許可」→「Cookie とサイトデータの管理と削除」→「すべての Cookie とサイトデータを表示する」→「127.0.0.1」と進んでいくと,Cookie に記録された sessionid を確認することができます.コンテンツの項目に同じ値 5nteeg7y9yqta4i3z7lp2pczxh8frhat
が記録されています.
さらに別のブラウザ(今回は Google Chrome)を使い user_b でログインした状態で django_session テーブルの中身を確認します.user_b には 8hh78dp8w9l9nncrqui9xdj7ixhd3azz
なるセッションキーが割り当てられました.
qlite> select * from django_session; ⏎ session_key|session_data|expire_date 5nteeg7y9yqta4i3z7lp2pczxh8frhat|.eJxVjMsOwiAQRf-FtSFAywAu3fsNZIaHVA0kpV0Z_11JutDtPefcF_O4b8XvPa1-iezMJDv9boThkeoA8Y711nhodVsX4kPhB-382mJ6Xg7376BgL9-apHCo0WhyUxRWSgshTQpzDskoDW4QgFlLQnCOjIoih8kKAwloduz9AdNqN1c:1oHduY:UJytk6CSEfAS25iF0yMN1esR8-Zt7enWfBE8so_w6oc|2022-08-13 13:17:10.414552 8hh78dp8w9l9nncrqui9xdj7ixhd3azz|.eJxVjDkOQjEQQ--SGkWTlaWk5wzRZDIhH1Ai_aVC3J1E-gU0luVn-y0CbmsJ28JzmJK4CC0Ov1lEenIdID2w3pukVtd5inJU5E4XeWuJX9e9-3dQcCl9rZCsciob7ZxnnxEICWLMaShb601PLYD29qS7Pzti4EzgWRk-is8X89c4RQ:1oHe2r:zm9hs929LOH2mn9brI-mYs5HEUqvYNAyi8hHKfkgIrM|2022-08-13 13:25:45.486662 sqlite>
Google Chrome では「設定」→「プライバシーとセキュリティ」→「Cookie と他のサイトデータ」→「すべての Cookie とサイトデータを表示」→「127.0.0.1」→「sessionid」と進むことで次の画面を表示できます.やはり,コンテンツに 8hh78dp8w9l9nncrqui9xdj7ixhd3azz
という値が保存されていることがわかります.
Edge でログインしていた user_a をログアウトすると,user_a のセッション情報が削除されていることがわかります.
sqlite> select * from django_session; ⏎ session_key|session_data|expire_date 8hh78dp8w9l9nncrqui9xdj7ixhd3azz|.eJxVjDkOQjEQQ--SGkWTlaWk5wzRZDIhH1Ai_aVC3J1E-gU0luVn-y0CbmsJ28JzmJK4CC0Ov1lEenIdID2w3pukVtd5inJU5E4XeWuJX9e9-3dQcCl9rZCsciob7ZxnnxEICWLMaShb601PLYD29qS7Pzti4EzgWRk-is8X89c4RQ:1oHe2r:zm9hs929LOH2mn9brI-mYs5HEUqvYNAyi8hHKfkgIrM|2022-08-13 13:25:45.486662 sqlite>
Google Chrome の user_b もログアウトしてデータベースを検索すると,すべてのセッション情報が削除さていることが確認できました.
sqlite> select * from django_session; ⏎ sqlite> .exit ⏎ (base) C:\Users\lecture\Documents\django\django_comment_auth>