これは単一のユーザーのログイン状態を示しているものなのでしょうか?
sessionはユーザー情報だけを保存するものではありません。
ユーザ毎(ブラウザ毎)に使えるグローバル変数みたいなもんです。
しかしながら、バックエンドのログイン処理についてですが、
下記のようにログイン後に、セッション登録するのは良いのですが、
session['username
]`に何かが入って居るのを「自分で」ログイン状態だと定義しているだけと思います。
私のイメージでは、同時ログインしたような場合に、
ログインされている人の情報が、sessionの中に
リストとして登録されているイメージを持っていました。
同じユーザ(例えばAさん)が、同じPCから別のブラウザ(Chrome, Edge, Firefox等)でWebページにアクセスしたら、別セッションです。
(別PCから同じ種類のブラウザでアクセスしても別セッションです。)
例えばですが、以下を実行し、Chromeでhttp://localhost:5000/
にアクセスすると、aaa
が表示され、リロードすると111
が表示されると思います。
111
が表示されたあとで、Edge(別のブラウザ)でhttp://localhost:5000/'にアクセスすると
aaa`が表示されるはずです。
python
1from flask import Flask, render_template, session
2
3app = Flask(__name__)
4
5app.config['SECRET_KEY'] = 'aaaaa'
6
7
8@app.route('/')
9def a():
10 print(session.get('test', 'aaa'))
11 session['test'] = '111'
12 return ''
13
14
15@app.route('/b')
16def b():
17 session['test'] = '222'
18 return ''
19
20
21if __name__ == '__main__':
22 app.run()
23
こんな感じでいかがでしょうか?
sessionではcookieを使っているようなので、何度もアクセスすると111
しか表示されなくなるかもしれません。
その場合はブラウザの再起動やcookieの削除を試してください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。