Почему некоторые значения сеанса Flask исчезают из сеанса после закрытия окна браузера, но затем появляются снова без добавления их?

Итак, мое понимание сеансов Flask заключается в том, что я могу использовать его как словарь и добавлять значения в сеанс, выполняя:

сессия [»ключевое имязнак равнонекоторая ценность здесь

И это прекрасно работает.

На маршруте у меня есть клиентский вызов с использованием сообщения AJAX, я присваиваю значение сеансу. И это прекрасно работает. Я могу нажимать на различные страницы моего сайта, и значение остается в сеансе. Однако если я закрою окно браузера и вернусь на свой сайт, то значение сеанса, которое у меня было, пропало.

Чтобы'это странно, и вы думаете, что проблема в том, что сессия нет постоянный. Я также реализовал Flask-Openid и использует сессию для хранения информации, и этоделает сохранится, если я закрою окно браузера и снова открою его. Я также проверил cookie после закрытия окна браузера, но перед тем, как вернуться на мой сайт, и cookie действительно все еще там.

Еще одна странная часть поведения (которая может быть связана) заключается в том, что некоторые значения, которые я записал в сеанс для целей тестирования, исчезнут, когда я получу доступ к пост-маршруту AJAX и назначу правильное значение. Это странно, но что действительно странно, так это то, что когда я затем закрываю окно браузера и снова открываю его и теряю значение, которое я пытался сохранить, те, которые я потерял ранее, фактически возвращают! Они непереназначается, потому что тамВ моих файлах Python нет кода для переназначения этих значений.

Вот некоторые выводы, которые помогут сделать это понятнее. Все они выводятся из маршрута для реальной страницы, а не из почтового маршрута AJAX, о котором я упоминал выше.

Это вывод после того, как я назначил значение, которое я хочу сохранить в сеансе. Значение ключа 'Идентификатор пользователя' - все остальные значения являются фиктивными, которые я добавил, пытаясь решить эту проблему. 'Идентификатор пользователя': 8 останется на сессии, пока я незакрыть окно браузера. Я могу получить доступ к другим маршрутам, и значение останется там, как и должно быть.

['session.=', ]

Если я закрою окно браузера и вернусь на сайт, но без повторного запроса на публикацию AJAX, я получу следующий вывод:

['session.=', ]

'Эй' значение не было в первом первом выводе. Я нене знаю, откуда это. Я искал свой код для 'Эй' и нет никаких случаев, когда я назначал это значение где-либо. Я думаю, что я, возможно, добавил это к сессии несколько дней назад. Таким образом, кажется, что оно сохраняется, но скрыто, когда записываются другие значения.

И последний - я снова получаю доступ к почтовому маршруту AJAX, а затем перехожу на страницу, где распечатываются ключи с помощью отладки. Тот же вывод, что и первый вывод, который я вставил выше, который вы ожидаете, иЭй' значение снова исчезает (но оно вернется, если я закрою окно браузера)

['session.=', ]

Я проверил это в Chrome и Firefox.

Поэтому я нахожу все это странным и полагаю, что это связано с неправильным пониманием того, как работают сессии. Я думаю, что они'словари и я могу записать в них значения словаря и получить их несколько дней спустя, если я установлю постоянный сеанс, а cookie неудалить

Есть идеи, почему происходит это странное поведение?

Ответы на вопрос(2)

Ваш ответ на вопрос