如何清除烧瓶会话?

时间:2015-01-02 19:36:10

标签: python-2.7 flask

导入flask时,我们会导入session等模块

SecureCookieSession是一种字典,可以使用会话访问。

现在,我尝试清除我在尝试构建网站时使用的所有垃圾变量。

stackoverflow上的一个答案使用session.clear()之类的命令来清除会话内容。但是这样的命令会给出一个错误,即不存在这样的命令。

有人能指出我如何清除SecureCookieSession以及每次关闭服务器或关闭网站时如何清除会话?

6 个答案:

答案 0 :(得分:52)

from flask import session

session.clear()

我使用这样的会话与烧瓶,它确实有效。 我虽然不使用SecureCookieSession,但也许可以提供帮助。

答案 1 :(得分:17)

您还可以遍历会话并为会话中的每个密钥调用session.pop()。 Pop会从会话中删除变量,您不必继续更新密钥。

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

答案 2 :(得分:6)

正如Jerry Unkhaptay's answer和相应的Flask documentation section中指出的,您可以简单地执行以下操作:

from flask import session

session.clear()

不过,正如评论中明确指出的那样,alejandro

  

如果您还在应用程序中使用闪烁消息,则应考虑将闪烁消息存储在会话中,因此,如果清除会话,则可以在闪烁消息之前将其擦除。

我的建议是利用列表理解:

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

它基本上与TheF1rstPancake's answer中的for循环相同,只是单线。我们可以很容易地从session中删除所有内容,除了闪烁的消息(或添加添加任何其他条件),就像这样:

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

答案 3 :(得分:0)

作为附加选项,如果您使用的是flask_login包,则您要做的就是在请求的上下文中调用logout_user

logout_user函数会弹出会话密钥,如其他答案中所述,同时还会清理remember cookie,并在login_manager中强制用户重新加载。它还会发送logged-out信号(如果信号处理在您的应用中很重要)。

from flask_login import logout_user
logout_user()

答案 4 :(得分:0)

如果要弹出并将其放入g,可以尝试:

from flask import g, session

my_value_list = ('sys_info', 'msg')
[setattr(g, s_k, session.pop(s_k)) for s_k in my_value_list if s_k in session.keys()]

答案 5 :(得分:-16)

无法clear会话或其他任何内容。

必须简单地更改app.config["SECRET_KEY"],会话字典中的内容将被删除。