Webサイトを利用していると、
- ログイン状態が保持される
- 会員ページにアクセスできる
- ショッピングカートの中身が保存されている
といった仕組みがあります。
これらを実現する重要な仕組みの一つが セッション(Session) です。
しかし、Web開発を始めたばかりの頃は
- セッションとは何か?
- Cookieとの違いは?
- ログイン状態はどうやって管理されているの?
と疑問に思うことも多いと思います。
この記事では、Webに詳しくない人でも理解できるように
- セッションとは何か
- セッションの仕組み
- Cookieとの違い
- ログイン状態の仕組み
をわかりやすく解説します。
セッション(Session)とは?
セッションとは
ユーザーごとの状態を一時的にサーバー側で管理する仕組み
のことです。
もう少しシンプルに言うと
「このユーザーは誰か」を覚えておく仕組み
です。
例えば
- ログインしているユーザー
- ショッピングカートに商品を入れているユーザー
などの情報を、サーバー側で管理できます。
なぜセッションが必要なのか
実はHTTP通信には
状態を覚えない(ステートレス)
という特徴があります。
例えば次のような操作を考えてみます。
- ユーザーがログインする
- 別のページを開く
このときサーバーからすると、
「さっきログインした人」なのか「新しくアクセスした人」なのかを区別できません。
そこで必要になるのが セッション です。
セッションを使うことで
「このユーザーはログインしている人」
という情報をサーバー側で管理できます。
セッションの仕組み
セッションは、次のような流れで動きます。
① ユーザーがサイトにアクセスする
② サーバーが セッションID を発行する
③ セッションIDをブラウザに保存する
④ 次回アクセス時にセッションIDを送信する
⑤ サーバーがユーザーを識別する
イメージとしては次のようになります。
サーバー → セッションIDを発行
ブラウザ → セッションIDを保存
次回アクセス → セッションIDを送信
この セッションID によって、
サーバーはユーザーを識別できるようになります。
ログインの例で考えるとわかりやすい
セッションの仕組みは、
ログイン機能を例にすると理解しやすくなります。
例えば、あるサイトにログインするときの流れを見てみましょう。
① ユーザーがログインする
ユーザーがログインフォームに
ユーザーID:tanaka
パスワード:1234
を入力して送信します。
② サーバーがセッションを作成する
ログインが成功すると、サーバーは
session_id = abc123
user_id = tanaka
のようなセッション情報を作成します。
この情報は サーバー側に保存 されます。
③ CookieにセッションIDを保存する
次にサーバーはブラウザに
session_id = abc123
というCookieを保存します。
ここで重要なのは
Cookieにはユーザー情報ではなく「セッションID」だけが保存される
という点です。
④ 再度ページにアクセスする
ユーザーが再度ページにアクセスすると、ブラウザは自動的に
session_id = abc123
をサーバーに送信します。
⑤ サーバーがユーザーを識別する
サーバーは
abc123 → tanaka
というセッション情報を確認し、
「この人はログイン済みユーザー」
と判断します。
セッションとCookieの違い
セッションを理解するうえで重要なのが
Cookieとの違いです。
| 仕組み | 保存場所 |
|---|---|
| Cookie | ブラウザ |
| セッション | サーバー |
つまり
- Cookie → ユーザーのブラウザに保存
- セッション → サーバー側に保存
という違いがあります。
ただし実際には
セッションIDを保存するためにCookieが使われる
ことが多いです。
つまり
Cookie → セッションIDを保存
セッション → ユーザー情報を管理
という関係になっています。
セッションの特徴
セッションには次の特徴があります。
一時的なデータ
セッションは基本的に
ブラウザを閉じると消える
仕様になっています。
セキュリティが高い
ユーザー情報は
サーバー側に保存される
ため、Cookieより安全に管理できます。
まとめ
セッションとは
ユーザーごとの状態をサーバー側で管理する仕組み
です。
セッションを使うことで
- ログイン状態の管理
- ショッピングカート
- ユーザー情報の保持
などが可能になります。
またセッションはCookieと組み合わせて使われることが多く
Cookie → セッションIDを保存
セッション → ユーザー情報を管理
という関係になっています。
Webの仕組みを理解するためには
- HTTP
- Cookie
- セッション
この3つをセットで覚えると理解が深まります。
