Python Bottleでセッションを発行して確認する

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 pipでインストールする(Windows)

サーバー側のセッションを発行/取得するコード

サーバー側のセッションを発行/取得する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です。
サーバ側にあるファイル名と一致します。

クッキーは削除可能です。中央の丸に斜め線が入ったアイコンで削除します。

関連の記事

Python http通信のサンプル

△上に戻る