Вот моя установка Настой: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'
Теперь, если я изменю CONFIG['LOGGED_IN']
на True
в одном из своих браузеров (скажем, Google Chrome), а затем откройте еще один браузер на веб-сайте (скажем, Firefox), то я уже вошел в систему на обоих. Если я затем выйду в Firefox и обновить Chrome, я выйду на оба.
Когда я использовал Django, я никогда не замечал такой проблемы ... моя глобальная переменная CONFIG сохраняется в браузерах. Weird!
Должен ли я сделать свой CONFIG в классе? Может быть, это происходит только при запуске dev_appserver.py и не произойдет в процессе производства? Я все еще учусь, поэтому, пожалуйста, будь красивой! Спасибо :)
Примечание: Пожалуйста, игнорируйте вопиющие проблемы безопасности в этом примере. Уверяю вас, я не планирую использовать этот код.
** Не используйте глобалам ** Почему вы никогда не замечали проблемы в Django является тайной , Если вам нужно что-то хранить о пользователе, используйте 'session'. – davidism
@davidism Но у меня также есть переменные типа 'CONFIG ['DEBUG']', который сообщает моему сценарию, показывать или нет ошибки в консоли JS для отладки. Если я храню такие вещи в сеансе, тогда любой может легко изменить его. – ThePloki
Нет, они не могут, сессия подписана, чтобы быть защищенной от подделки, взгляните на ее значение в браузере. Кроме того, конфигурация чтения, установленная при настройке приложения, отличается от сохранения изменения состояния определенных сеансов. – davidism