① Sessionとは?
Session(セッション)とは、Webサーバーがユーザーごとの情報を一時的に保存し、リクエスト間でデータを保持する仕組みです。
Webサイトでは、ユーザーがページを移動するたびに新しいリクエストが発生しますが、Sessionを使うことでログイン情報やカートの中身を維持できます。
例えば、ECサイトでは以下のような情報をSessionで管理します:
- 「カートの中身」
- 「ログイン状態」
これらの情報は、Session ID(セッションID)としてユーザーのブラウザにCookieとして保存されます。 次回のリクエスト時にこのSession IDを使って、サーバーがユーザーを識別できるようになります。
②Sessionの主な役割
- ユーザーの識別(ログイン情報の保持)
-
状態の維持(例:ショッピングカート)
→ ユーザーが追加した商品を記憶 -
アクセス制御(認証が必要なページの制御)
→ SESSION_ID をチェックし、ログイン状態を判定 -
セキュリティ対策
→ Cookie だけでログイン情報を保持すると、改ざんのリスクがあるため、Sessionを利用して安全に情報を管理
③WebサイトでのSession活用例(ECサイト)
以下のような流れでSessionが活用されます:
1.ECサイトにアクセス
GET /
- サーバーはHTMLを返すだけ。まだSessionは作られていない。
2.ユーザーがログイン
POST /login
- 認証成功後:
• サーバーが SESSION_ID を生成
• Sessionに user_id を保存
• Cookieに SESSION_ID をセット
Set-Cookie: SESSION_ID=abc123
3.商品をカートに追加
POST /cart/add
• ブラウザが Cookie として SESSION_ID=abc123 を送信
• サーバーは SESSION_ID をキーにしてカート情報をSessionに保存
4.ページを移動(例:商品一覧ページ)
GET /products
• Cookieの SESSION_ID をもとに、サーバーはセッションを参照
• カートの中身などを維持
5.ログアウト処理
POST /logout
• セッションを削除し、ログイン情報を破棄
• Cookieも無効化
Set-Cookie: SESSION_ID=; expires=Thu, 01 Jan 1970 00:00:00 GMT
④Sessionの重要性(ステートレスなHTTPとの関係)
HTTP通信はステートレス(状態を保持しない)なため、
ログインやカートの情報は本来ページ間で引き継がれません。
→そこで Sessionを使うことで、サーバー側でユーザーの情報を一時的に保存できるようになり、状態を持たせることが可能になります。
⑤ LaravelでのSession設定
Laravelでは、.env ファイルの以下の設定で、**セッションの保存方法(ドライバ)**を変更できます:
SESSION_DRIVER=file
主なセッションドライバ:
-
file
→ファイルとして保存(デフォルト) -
database
→データベースに保存 -
redis
→高速キャッシュ用 -
array
→一時的(テスト用) -
その他
→cookie、apc、memcachedなど
・CookieにはSession IDのみが保存され、実際のデータはサーバーに保持されます。
用途に応じて、最適なドライバを選択しましょう!
⑥まとめ
- Sessionは、サーバー側でユーザー状態を管理する仕組みです。
- 主にログイン管理・カート情報の保持・アクセス制御に使われます。
- Laravelでは簡単にSessionの保存先を変更可能!
- CookieはSession IDを保持し、セキュリティ面でもSessionが安全