Python 2.7 如何清除烧瓶会话?
在导入flask时,我们导入模块,如Python 2.7 如何清除烧瓶会话?,python-2.7,flask,Python 2.7,Flask,在导入flask时,我们导入模块,如session等 SecureCookieSession是一种字典,可以使用会话访问 现在,我尝试清除我在构建网站时使用的所有垃圾变量 stackoverflow上的一个答案使用了类似于session.clear()的命令来清除会话内容。但是这样的命令会给出一个错误,即不存在这样的命令 有人能为我指出如何清除SecureCookieSession以及如何在每次我关闭服务器或网站时清除会话吗?没有办法清除会话或任何东西 只需更改app.config[“SECRE
session
等
SecureCookieSession
是一种字典,可以使用会话访问
现在,我尝试清除我在构建网站时使用的所有垃圾变量
stackoverflow上的一个答案使用了类似于session.clear()
的命令来清除会话内容。但是这样的命令会给出一个错误,即不存在这样的命令
有人能为我指出如何清除SecureCookieSession
以及如何在每次我关闭服务器或网站时清除会话吗?没有办法清除会话或任何东西
只需更改app.config[“SECRET\u KEY”]
即可删除会话字典中的内容
from flask import session
session.clear()
我用烧瓶这样的会话,它确实有效。
虽然我不使用SecureCookieSession,但它可能会有所帮助。您也可以迭代会话并为会话中的每个键调用session.pop()。Pop将从会话中删除变量,您不必不断更新密钥
for key in list(session.keys()):
session.pop(key)
正如在中以及在相应的中指出的,您可以简单地执行以下操作:
尽管,正如在评论中公正地指出的那样:
如果您还在应用程序中使用闪存消息,则应该考虑闪存的消息存储在会话中,因此,如果您清除了<代码>会话< /代码>,则可以在它们闪现之前擦除。
我的建议是利用列表理解:
对于
循环,它与中的基本相同,尽管是一个单行程序。我们可以很容易地从会话
(或添加任何其他条件)中删除所有内容,除了闪现的消息,如下所示:
作为一个附加选项,如果您使用的是flask\u login
包,那么您所要做的就是在请求上下文中调用logout\u user
logout\u user
功能弹出会话键,如其他答案中所述,同时清理memory
cookie并在login\u管理器中强制重新加载用户。它还发送一个注销
信号(如果信号处理在应用程序中很重要)
如果要弹出并将其置于g
,可以尝试:
来自flask导入g,会话
我的值列表=('sys\u info','msg')
[setattr(g,s_k,session.pop(s_k)),如果s_k在session.keys()中,则在my_value_列表中为s_k设置属性]
如下所示,可以使用session.clear()
清除会话,并将此导入从flask导入会话中包括在内,这样做将立即使所有访客cookie无效,并迫使他们重新登录,而不是投票拒绝此帖子,让我们让每个人都做得更好!重置密钥的点是有效点!注意:如果你还在你的应用程序中使用闪存消息,你应该考虑闪存的消息被存储在会话中,因此,如果你清除了会话,闪存的消息会在闪现之前被擦除。我们可以在主动请求上下文中这样做,只对吗?@ GautamJain,是的!否则,“在请求上下文之外工作”将出现运行时错误,它应该是session.pop(key)
而不是session.pop[key]
很好!EditedI收到一个运行时错误“字典在迭代期间更改了大小”。我更成功的是:key\u list=list(session.keys())for key-in-key\u list:session.pop(key)
您可能需要重新考虑接受哪个答案。
from flask import session
session.clear()
[session.pop(key) for key in list(session.keys())]
[session.pop(key) for key in list(session.keys()) if key != '_flashes']
from flask_login import logout_user
logout_user()