PythonのBottleでセッションを発行して確認するサンプルです。
確認環境 ・Python 3.8.5 ・Windows 10 |
目次
概要 | セッションの流れ |
サンプル | サーバー側のセッションを発行/取得するコード |
サーバー側のセッションIDのファイル | |
クライアント側のChromeブラウザでクッキーを確認する |
セッションの流れ
1.クライアントがWebサーバーにアクセスします。
2.Webサーバーにあるプログラムが「セッション」を発行して「クッキー」でクライアントに送ります。
3.再度クライアントがWebサーバーにアクセスする時、クライアントは「クッキー」をWebサーバーに送信します。Webサーバーにあるプログラムは「クッキー」の「セッション」を取得して識別します。
前提条件
1.Bottleフレームワークを使用しています。
Python Bottleフレームワークのサンプル
2.pipを使用してbeakerをインストールしています。
pip install beaker
サーバー側のセッションを発行/取得するコード
サーバー側のセッションを発行/取得するPythonのコードです。
画面を再読み込みすると、数値が1つ上がります。
# coding: utf-8
import bottle
from beaker.middleware import SessionMiddleware
session_opts = {
'session.type': 'file',
'session.cookie_expires': 300,
'session.data_dir': './data',
'session.auto': True
}
app1 = SessionMiddleware(bottle.app(), session_opts)
@bottle.route('/test1')
def test():
session1 = bottle.request.environ.get('beaker.session')
if "count1" not in session1:
rec = "first"
session1["count1"] = 1
else:
session1['count1'] = session1.get('count1',0) + 1
rec = session1['count1']
session1.save()
return "session:{}".format(rec)
bottle.run(app=app1,host="127.0.0.1",port='8765')
15行目は、セッションを取得します。
16行目は、セッションのキーが存在するか確認しています。
最初の表示時の判定はtrueになり、17行目以下が実行され画面にfirstと表示されます。
2回目以降のアクセス時は、20行目以降が実行されます。
セッションのcount1の値が1増加します。
以下は、初回表示時の画面です。
以下は、2回目の表示時の画面です。
再読み込みする度に数値がカウントアップしていきます。
https://bottlepy.org/docs/dev/recipes.html
サーバー側のセッションIDのファイル
サーバ側にセッションIDのファイルが作成されます。
場所は、上記コードがあるフォルダのdataフォルダ配下です。
確認した環境では、以下です。
D:\testPython\data\container_file\9\9d\9d9d3c0b6fcc48c691fe674e9d5ab180.cache
クライアント側のChromeブラウザでクッキーを確認する
Google Chromeのデベロッパーツールでセッションで使用したクッキーを確認できます。
「F12」キーを押してデベロッパーツールを開き、「Application」→「Cookies」→「http://localhost」をクリックします。
クッキーの内容は、セッションIDのみ確認できます。コードで使用した"count1"とその値は確認できません。
valueの欄にある「9d9d3c0b6fcc48c691fe674e9d5ab180」はセッションIDです。
サーバ側にあるファイル名と一致します。
クッキーは削除可能です。中央の丸に斜め線が入ったアイコンで削除します。
関連の記事