Webアプリケーションにおけるセッションとは
・代表的な例が、ログイン後の画面表示です。ログインが必要なWebサイトの場合、ログインに成功すると「ようこそ○○さん」と表示されます。
その後は、どのページをクリックしても自分のユーザー名が表示されるはずです。
画面から何もデータを送信していないのに、自分のユーザー名が毎回表示される。
このように複数の画面で状態を共有する仕組みがセッション(Session)。
セッションはWebサイト単位でデータ共有できるスペースのようなもので、各々のユーザーごとに区画されています。
sessionオブジェクトに値を読み書きすることで、セッションを使えます。
セッションに入れたデータはサーバー側(Python側)でデータを保持できるので、クライアント側からデータを送って貰う必要がありません。
実例
フロント
<body>
ログインしてください<br>
<form method="get" action="{{ url_for('login')}}">
<p>名前:<input type="text" name="name" size="40"></p>
<button type="submit">ログイン</button>
</form>
</body>
</html>
バック
from flask import Flask, render_template, session, redirect, url_for, request
app = Flask(__name__)
app.secret_key = 'hXDm8NXqqJATH&7XHW6AtM.XEqM4cEMn'
@app.route("/login")
def login():
your_name = request.args.get("name", "")
if your_name:
session["username"] = your_name
return redirect(url_for("todo"))
else:
return redirect(url_for("index"))
※ログインされたらyour_nameをsession[username]に代入してセッションに保存している
@app.route("/logout")
def logout():
session.clear()
return redirect(url_for("index"))
※ログアウトしたらセッションから削除