Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用flask的服务器端会话?_Python_Flask - Fatal编程技术网

Python 使用flask的服务器端会话?

Python 使用flask的服务器端会话?,python,flask,Python,Flask,在试用Django之后,我对客户端会话感到惊讶。是什么阻止用户重放旧值?当我现在注销时,我的会话可以在一个月后重播 我想在每次会话中提供CSRF保护(特别是针对)。另外,我想在服务器端设置/取消设置会话,以便旧会话cookie无效。我想让它和信息闪烁的东西兼容 什么实现可以满足这三个需求?Flask会话有一个内置的过期日期,以加密方式强制执行。在会话值过期后,客户端无法重播该值 您可以通过设置来设置最大会话有效期。默认值为31天 您可以将该值设置得更低;默认情况下,Flask会在每个请求上刷新c

在试用Django之后,我对客户端会话感到惊讶。是什么阻止用户重放旧值?当我现在注销时,我的会话可以在一个月后重播

我想在每次会话中提供CSRF保护(特别是针对)。另外,我想在服务器端设置/取消设置会话,以便旧会话cookie无效。我想让它和信息闪烁的东西兼容


什么实现可以满足这三个需求?

Flask会话有一个内置的过期日期,以加密方式强制执行。在会话值过期后,客户端无法重播该值

您可以通过设置来设置最大会话有效期。默认值为31天

您可以将该值设置得更低;默认情况下,Flask会在每个请求上刷新cookie时间戳,这意味着只要用户继续访问,cookie就会不断刷新。将
PERMANENT\u SESSION\u life
设置为1小时,如果用户在一小时或更长时间内没有访问您的服务器,会话将自动过期

如果您感到好奇,会话将被序列化,并使用来自的
URLSafeTimedSerializer
进行签名


注意,登录信息可以使用它自己的超时;不要只是在会话中记录用户名,还要添加上次看到该用户的时间。会话数据经过加密签名,因此最终用户无法更改cookie。每次用户返回时,刷新该时间戳。这样,您就可以使用户登录过期与会话过期无关。

Flask会话有一个内置的过期日期,以加密方式强制执行。在会话值过期后,客户端无法重播该值

您可以通过设置来设置最大会话有效期。默认值为31天

您可以将该值设置得更低;默认情况下,Flask会在每个请求上刷新cookie时间戳,这意味着只要用户继续访问,cookie就会不断刷新。将
PERMANENT\u SESSION\u life
设置为1小时,如果用户在一小时或更长时间内没有访问您的服务器,会话将自动过期

如果您感到好奇,会话将被序列化,并使用来自的
URLSafeTimedSerializer
进行签名


注意,登录信息可以使用它自己的超时;不要只是在会话中记录用户名,还要添加上次看到该用户的时间。会话数据经过加密签名,因此最终用户无法更改cookie。每次用户返回时,刷新该时间戳。这样,您就可以使用户登录过期与会话过期无关。

只要Django-会话是客户端的,如果您明确地将其设置为:“它将数据存储在服务器端,并抽象cookies的发送和接收。cookies包含会话ID,而不是数据本身(除非您使用的是基于cookie的后端)。”。至于Django-sessions,如果您明确地将其设置为客户端:“它在服务器端存储数据,并抽象cookie的发送和接收。cookie包含会话ID,而不是数据本身(除非您使用的是基于cookie的后端)。”。正如我在问题中提到的,如果我在第1天注销怎么办?cookie仍然是“活动的”@aitchnyu:然后将
永久会话\u生存期
设置为一个较低的值。您的会话存储可能已经提供了这个值;例如,缓存的后端(不是数据库)可以自动清除会话。这可能是“强制”的另一种方式会话已退出。我希望会话的有效期为一个月,但一旦我注销,它就会变得无效。如何使用客户端会话做到这一点?CSRF保护又如何?@BurhanKhalid:默认的Flask会话实现是客户端会话。这可能空间有限(虽然会话确实使用gzip压缩来扩展它),但它比使用服务器端会话的可伸缩性要高得多。正如我在问题中提到的,如果我在第一天注销怎么办?cookie仍然是“活动的”@aitchnyu:然后将
永久会话\u生存期
设置为较低的值。您的会话存储可能已经提供了此功能;例如,缓存的后端(不是数据库)可以自动清除会话。这可能是“强制”的另一种方式会话已退出。我希望会话的有效期为一个月,但一旦我注销,它就会变得无效。如何使用客户端会话做到这一点?CSRF保护又如何?@BurhanKhalid:默认的Flask会话实现是客户端会话。这可能空间有限(虽然会话确实使用gzip压缩来扩展它),但它比使用服务器端会话具有更大的可伸缩性。