导入flask时,我们会导入session
等模块
SecureCookieSession
是一种字典,可以使用会话访问。
现在,我尝试清除我在尝试构建网站时使用的所有垃圾变量。
stackoverflow上的一个答案使用session.clear()
之类的命令来清除会话内容。但是这样的命令会给出一个错误,即不存在这样的命令。
有人能指出我如何清除SecureCookieSession
以及每次关闭服务器或关闭网站时如何清除会话?
答案 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"]
,会话字典中的内容将被删除。