约瓶会话

问题描述:

考虑下面这个简单的烧瓶应用中的一些问题约瓶会话

  1. 一旦“enter_string”端点被访问和用户分配一个字符串session["string"],存储的字符串在哪里?它在服务器的内存还是用户的?
  2. 默认情况下,会话在浏览器退出时过期。有没有简单的方法让其他事件触发会话过期,例如关闭窗口但不一定是浏览器?
  3. 默认情况下,会话是否会超时或保留,直到浏览器退出,无论需要多长时间?

Flask中的会话可以用不同的方式实现。默认实现基于安全cookie(具有防止篡改的加密签名的cookie)。以下是针对此实现的问题的答案:

  1. 该字符串将存储在客户端cookie中。每次浏览器向服务器发送请求时,cookie都会随之发送。

  2. 客户端可以通过使用Javascript删除cookie来销毁会话。 (会话cookie的默认名称是session)。服务器可以通过从中删除所有项目来删除会话。

  3. 在默认实现中,cookie的到期日期将来会设置31天。这可以通过PERMANENT_SESSION_LIFETIME配置设置进行更改。

正如我上面提到的,Flask支持第三方会话处理程序,所以上述答案可能不适用于其他实现。特别是,有一些处理程序实现了将会话数据存储在服务器而不是客户端的服务器端会话(例如Flask-Session或Flask-KVSession)。

+0

当谈到这里的会话时,我将展示自己的绿色,但我在会话的印象之下,它通常是一个散列,它被存储为本地cookie,然后从服务器获取......我不知道会话在本地存储整个数据...... –

+2

@JoranBeasley您描述的实现被广泛使用,但这并不是Flask默认执行的操作。如果您使用服务器端扩展,如[Flask-Session](http://pythonhosted.org/Flask-Session/),则Flask会将会话散列存储在cookie中,就像您说的那样。 – Miguel

+0

它总是很好学习新东西:) –