はじめに
ログインが必要なサイトを構築する上で必要になるセッションの知識についてまとめました
session(セッション)とは
セッションは、ウェブサイトがユーザーの一連の操作(セッション)を記憶しておくための仕組みです。例えば、ログイン情報やショッピングカートの中身など、ユーザーがウェブサイトで行った操作の状態を保存します。そうすることでページを更新したり、別のページに移動した後でもログイン状態を継続したり、ショッピングカートの中身を継続したりすることができます
sessionの保存先について
cookieはサーバーから命令されることでユーザーのブラウザに保存されます。それに対してsessionはサーバー側にデータを一時的に保存するために用います。メリットとしてサーバーに保存することでデータの改竄を防ぐことができます
Cookeiについて
Cookeiについての詳細は次の記事を参照してください
sessionの有効期限について
セッションもクッキーも一時的に保存されるデータの一つです。しかしセッションはブラウザが閉じたらすぐに削除されるデータ
なのでPCのメモリやファイルに保存されます
保存されるsessionの見本
sesshionに保存されるデータは使用する言語や環境によって異なります。以下はショッピングサイトで保存されるsessionの例になります
{
"loggedInUser": { // ログインユーザー情報を保持するためのキーです。
"userId": "user123", // ユーザーIDを表現するキー
"username": "John Doe", // ユーザー名を表現するキー
"email": "john.doe@example.com" // 電子メールアドレス
},
"shoppingCart": { // ショッピングカート情報を保持するためのキーです。
"items": [ // カート内のアイテム一覧を保持するためのキーです
{
"itemId": "item456", //アイテムIDを表現するキー、その値が"item456"です。
"itemName": "T-shirt", // アイテム名を表現するキー、その値が"T-shirt"です。
"quantity": 2 // アイテムの数量を表現するキー、その値が2です }
]
}
}
sessionの特徴
セッションを利用する場合はcookie(セッションcookie)に重複しない文字列を保存します。この文字列をセッションID
と呼びます。
Javaの場合セッションIDは自動でユニーク(絶対に被らない値)な値を生成してくれます。
一人のユーザーに1つのセッションが作成される
Webアプリケーションにおける1ユーザーのセッションは1つです。
1つのセッションが作成される理由(例)
あるユーザーがショッピングサイトに訪れ、商品をカートに追加しました。このユーザーがブラウザを閉じずに別のページに移動したとき、そのカート内の商品情報をどのように保持するでしょうか?
ここで役立つのがセッションです。サーバは、ユーザーがサイトにアクセスしたときに一意のセッションIDを生成し、そのIDをユーザーのブラウザに送ります(通常はクッキーを通じて)。サーバはそのセッションIDに対応するデータ(この場合、カートの内容)を保持します。
ユーザーが別のページに移動しても、ブラウザはサーバに対してこのセッションIDを送り続けます。すると、サーバはセッションIDに基づいて、それぞれのユーザーに関連するデータ(カートの内容など)を取り出すことができます。
もし、同一のユーザーに対して複数のセッションが存在すると、どのセッションが現在のユーザーの状態を反映しているのか、どのセッションにカートの情報を保存すべきかが混乱してしまいます。したがって、一般的には、1ユーザーに対して1セッションが存在します。そのため、ユーザーが別のページに移動しても、そのユーザーの状態(カートの内容など)を正確に追跡することができます。
あとがき
今回はsessionに関する学習内容をアウトプットしました。この記事が参考になれば幸いです。