Как очистить сеанс колбы?

При импорте фляги мы импортируем такие модули, как session и т.д.

SecureCookieSession - это своего рода словарь, доступ к которому можно получить с помощью сеанса.

Теперь я пытаюсь очистить все ненужные переменные, которые я использовал при создании сайта.

В одном из ответов на stackoverflow использовалась команда типа session.clear() для очистки содержимого сеанса. Но такая команда выдает ошибку, что такой команды не существует.

Может ли кто-нибудь указать мне, как очистить SecureCookieSession и как очистить сеанс каждый раз, когда я выключаю сервер или закрываю веб-сайт?

Ответ 1

Нет сеанса clear или ничего.

Нужно просто изменить app.config["SECRET_KEY"], и содержимое в словаре сеанса будет стерто.

Ответ 2

from flask import session

session.clear()

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

Ответ 3

Вы также можете перебирать сеанс и вызывать session.pop() для каждого ключа в сеансе. Pop удалит переменную из сеанса, и вам не придется обновлять секретный ключ.

for key in session.keys():
     session.pop(key)

Ответ 4

Как указано в ответе Джерри Унхаптая, а также в соответствующем разделе документации Flask, вы можете просто сделать:

from flask import session

session.clear()

Хотя, как справедливо указывал в комментарии Алехандро:

Если вы также используете в своем приложении перепрограммированные сообщения, вам следует учитывать, что перепрограммированные сообщения хранятся в session и, следовательно, могут быть удалены до того, как они вспыхнут, если вы очистите session.

Мое предложение состоит в том, чтобы воспользоваться преимуществами понимания списка:

[session.pop(key) for key in list(session.keys())]

по сути, это тот же цикл for что и в ответе TheF1rstPancake, хотя и с одной строкой. Мы можем удалить все, кроме прошитых сообщений, из session (или добавить добавить любые другие условия, в этом отношении) довольно легко, например, так:

[session.pop(key) for key in list(session.keys()) if key != '_flashes']