如何清除烧瓶会话?

use*_*310 19 flask python-2.7

在导入烧瓶时,我们导入模块等session.

SecureCookieSession 是一种字典,可以使用session访问.

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

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

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

小智 65

from flask import session

session.clear()
Run Code Online (Sandbox Code Playgroud)

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

  • **注意:**如果您还在应用程序中使用闪烁消息,则应考虑闪存消息存储在会话中,因此如果您清除会话,则可以在闪烁之前将其擦除. (6认同)

The*_*ake 19

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

for key in session.keys():
     session.pop(key)
Run Code Online (Sandbox Code Playgroud)

  • 我得到了一个 RuntimeError “字典在迭代过程中改变了大小”。我在以下方面取得了更大的成功:```key_list = list(session.keys()) for key_list: session.pop(key)``` (2认同)

Fil*_* W. 10

正如Jerry Unkhaptay的回答以及相应的Flask文档部分所述,您可以简单地做到:

from flask import session

session.clear()
Run Code Online (Sandbox Code Playgroud)

虽然,正如评论中指出的那样,由alejandro:

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

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

[session.pop(key) for key in list(session.keys())]
Run Code Online (Sandbox Code Playgroud)

它与TheF1rstPancake的答案基本上是相同的session循环,尽管是单行.我们可以很容易地删除除闪现消息之外的所有内容(或者添加添加任何其他条件),如下所示: session

[session.pop(key) for key in list(session.keys()) if key != '_flashes']
Run Code Online (Sandbox Code Playgroud)


Pra*_*ava -44

没有办法进行clear会话或任何东西。

只需简单地更改app.config["SECRET_KEY"]会话字典中的内容就会被删除。

  • 这样做会立即使所有访客 cookie 失效并迫使他们重新登录 (14认同)
  • 与其投票否决这篇文章,不如让我们让每个人都变得更好!重置密钥的点是有效点! (5认同)
  • 如下所示,可以使用“session.clear()”清除会话,并包含此导入“fromflask import session” (4认同)