LoginSignup
7
9

More than 3 years have passed since last update.

【Django】sessionとは?

Posted at

はじめに

DjangoでECサイトを作っていてsessionという謎のワードにぶち当たったので調べてみました。

sessionとは

クライアントごとの情報
WEBサーバー内に保存されている
セッションはクライアントWebブラウザを閉じるまで保存する
リンクなどを張ってページを移動しても内容を保持することができる

sessionの原理

  1. ユーザーがWEBサイトにアクセス
  2. WEBサイトのサーバーがユーザーに対してセッションIDというものを付与
  3. ユーザーのブラウザがこのセッションIDを保持
  4. 通信(ページ移動など)するたびにセッションIDをWEBサーバー側に送る
  5. セッションIDによってWEBサイトはたくさんのユーザーの中から特定のユーザーを識別できる

YoutubeやAmazonなどのサイトに置き換えて考えると分かりやすい
このサイトがECサイトを例え使って説明している

3番のブラウザがセッションIDを保持しておく場所をcookieという。
cookieにはその他にも色々な情報が保持されている。

coolieとは

Cookie は、アクセスしたウェブサイトによって作成されるファイルです。サイトでは、Cookie を使用して、ユーザーのログイン状態を維持したり、ユーザーのサイトの利用設定を記憶したり、ユーザーの地域に関連する情報を提供したりできます。

WebサーバーからWebブラウザへHTTPレスポンスのヘッダを利用して小さな情報を送る。
この時送られる情報の一つにcookieが含まれている。
Cookieは、サーバアクセスするたびに自動送信される
もちろんsessionを作ったウェブサイト以外には他のサイトが作ったcookieを見せない

自分のcookieとやらを見てみた

chrome://settings/siteDataにアクセスすると見れるらしい。

youtube.comによって作らたcookieはこんな感じだった。
スクリーンショット (19).png
例えば、LOGIN_INFOにはログインしているかどうかの情報が入っているのだろう。
これらの情報をもとにしてWEBアプリケーション側はユーザーごとにサービスを提供している。

sessionを扱うメソッド

exists():引数に与えられた「session_key」に対するセッションが存在するかを判定するメソッド
create():はセッションキーの生成や、セッションの生成を行うメソッド
save():はセッションをバックエンドに保存するメソッド
delete():はバックエンドから該当のセッションを削除するメソッド
load():はバックエンドからセッションをロードするメソッド

参考サイト

公式ドキュメント
Cookieとセッションをちゃんと理解する
Djangoのセッションを自作する方法



7
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
9