Cookieを使う - bottle
bottleでCookieを使う
Cookieの保存
response.set_cookie('userId', 'tamago', max_age=15552000)
max_age
を設定しないと、ブラウザを閉じてしまうと消えてしまう
Cookieの取得
request.get_cookie('userid')
Cookieの削除
response.delete_cookie('userid')
サンプルコード
以下のようなmain.pyを作成する
max_age
を設定しなかった場合、ブラウザを閉じてしまうとCookieは消えることを確認してみた
from bottle import route, run, response, request @route('/test1') def test1(): # max_ageは設定しない response.set_cookie('userId', 'tamago') return 'クッキーに保存' @route('/test2') def test2(): return f'クッキーから取得{request.get_cookie("userId")}' run(host='localhost', port=3000, debug=True, reloader=True)
localhost:3000/test2 にアクセス:「クッキーから取得tamago」が表示
一回、ブラウザを閉じて localhost:3000/test2 にアクセスすると、「クッキーから取得None」が表示される。これは、max_age
を設定していないため消えてしまった
Cookieの署名
Cookieはクライアント側で改変できてしまうため、サーバー側で設定したものかどうかを確認しないといけない。そのために、Cookieを保存、取得するときに署名キーを引数に渡すこと。署名キーが一致しなければ、Noneが返されるようになっている。
secret
に署名キーを設定する
# 保存 response.set_cookie('name', 'tamago', secret='secret-key-abc') # 取得 request.get_cookie('name', secret='secret-key-abc')
Tutorial — Bottle 0.13-dev documentation