web-dev-qa-db-ja.com

Flaskセッション変数

フラスコ付きの小さなウェブアプリを書いています。 2人のユーザー(同じネットワーク下)がアプリを使おうとすると、セッション変数に問題があります。

これはコードです:

import os

from flask import Flask, request, render_template, g, session
from random import randint

def random():
     session['number'] = randint(0,4)
     return None

@app.route('/')
def home():
  if not session.get('logged_in'):
    return render_template('login.html')
  else: 
    return check()

@app.route('/login', methods = ['GET', 'POST'])
def login():
      global username
      username = request.form['username']
      session['logged_in'] = True
      session['username'] = username
      return check()

@app.route('/check', methods=['GET', 'POST'])
def check():
       random()
       return render_template('file.html', number = session['number'], user = session['username'])

if __name__ == "__main__":
    app.secret_key = ".."
    app.run(Host = '0.0.0.0',port = 3134, debug=False)

File.htmlには、「/ check」ルートを呼び出すボタンタイプ「送信」があります。問題は、変数「number」が最後にボタンを押したユーザーの変数「number」と等しいため、2人のユーザーが同時にアプリを使用する場合です... 2つのセッション間に独立性はありません。

ローカルホストで私のアプリを使用する場合のように、2人のユーザーが2つの独立セッションを持っていると思います。

4
Teor9300

2人のユーザーのセッション変数が同じである理由は、同じコンピューター/ブラウジングアカウントを使用していることが原因である可能性があります。これは、新しいFacebookタブを開いた後、Facebookがログインステータスを記憶する方法と同じです。

別のコンピューターを入手するか、別のChromeアカウント(Google Chromeの右上)を使用して、さまざまなユーザーをテストすることをお勧めします。

0