間で永続的なグローバル変数ここでは私のフラスコの設定があります:(この例では、 "..." と短縮)GAEフラスコブラウザ
main.py
from flask import Flask
from app.views import main_bp
app = Flask(__name__)
app.register_blueprint(main_bp, url_prefix='')
app.config.py
CONFIG = {
'SITE_NAME': 'Test Site',
'SSL': False,
'DEBUG': True,
'LOGGED_IN': False,
...
}
views.py
from config import CONFIG
@main_bp.route('/')
@main_bp.route('/<page_slug>/')
def fallback(page_slug='home'):
# Check if logged in
if CONFIG['LOGGED_IN']:
return 'Logged In'
else
return 'Logged Out'
私のブラウザの1つでCONFIG['LOGGED_IN']
をTrue
に変更した場合(Google Chromeと言う)、別のブラウザをウェブサイト(Firefoxとしましょう)で開くと、すでに両方にログインしています。 FirefoxでログアウトしてChromeをリフレッシュすると、両方でログアウトします。
私がDjangoを使用していたとき、私はこのような問題に気付かなかった...私のグローバルなCONFIG変数は、ブラウザ間で永続しています。奇妙な!
CONFIGをクラスにする必要はありますか?これはdev_appserver.pyを実行しているときにのみ発生し、実稼働環境では発生しませんか?私はまだ学んでいますので、素敵にしてください!ありがとう:)
注:この例の危険なセキュリティ問題は無視してください。私はこのコードをどのように使用する予定ではないことを私は保証します。
**グローバルを使用しないでください**あなたはジャンゴで問題に気づいたことがないのはなぜ謎です。ユーザーについて何かを保存する必要がある場合は、 'session'を使用してください。 – davidism
@davidismしかし、デバッグのためにJS Consoleにエラーを表示するかどうかをスクリプトに伝える 'CONFIG ['DEBUG']'のような変数もあります。セッションにそのようなものを保存すれば、誰でも簡単に変更できます。 – ThePloki
いいえ、セッションは改ざんから安全であるように署名されています。ブラウザの値を見てください。また、アプリケーション設定で設定された読み取り設定は、特定のセッションについての変更状態の保存とは異なります。 – davidism