Python Flask登录:当选项卡关闭时,如何强制Firefox/Chrome删除会话cookie?

Python Flask登录:当选项卡关闭时,如何强制Firefox/Chrome删除会话cookie?,python,session,cookies,flask,flask-login,Python,Session,Cookies,Flask,Flask Login,我一直在努力学习Flask,并一直在学习Flask登录扩展。我可以使基本身份验证按预期工作。让我困惑的问题涉及Firefox中的“显示上次的窗口和选项卡”设置和Chrome中的“继续我离开的地方”设置。我在这个网站和其他地方所做的所有研究都表明,这些设置应该只适用于打开的选项卡。因此,如果您已通过身份验证,然后关闭选项卡,然后关闭浏览器,则浏览器应仅恢复浏览器关闭时打开的选项卡的会话专用cookie。然而,在Firefox和Chrome浏览器中,当浏览器再次启动时,仅会话cookie仍然处于活动

我一直在努力学习Flask,并一直在学习Flask登录扩展。我可以使基本身份验证按预期工作。让我困惑的问题涉及Firefox中的“显示上次的窗口和选项卡”设置和Chrome中的“继续我离开的地方”设置。我在这个网站和其他地方所做的所有研究都表明,这些设置应该只适用于打开的选项卡。因此,如果您已通过身份验证,然后关闭选项卡,然后关闭浏览器,则浏览器应仅恢复浏览器关闭时打开的选项卡的会话专用cookie。然而,在Firefox和Chrome浏览器中,当浏览器再次启动时,仅会话cookie仍然处于活动状态,我导航到标记为@login_required的页面。我还应该提到,我正在将False传递给login\u user memory参数,如下所示:
login\u user(user,memory=False)

我一直在考虑使用Flask登录扩展重新登录的想法,认为在关闭浏览器之前关闭选项卡肯定会将会话标记为过时,但事实并非如此。我检查了
login\u fresh()
的值,如果登录是新鲜的,它将返回true,但仍然返回true

我通过使用
session.permanent=True
并设置
app.permanent\u session\u lifety='some minutes/seconds'
,找到了如何让登录在给定时间后过期的方法,这很好,但不是我想要的

我可以接受这样一个事实,Firefox/Chrome会记住打开的选项卡的会话cookie,但我不明白的是,为什么他们会记住我的站点的会话cookie,即使在关闭浏览器之前关闭了选项卡。这是预期的行为吗?当我先关闭选项卡然后再关闭浏览器时,是否有理由期望删除我站点的会话cookie

这是预期的行为吗?当我先关闭选项卡然后再关闭浏览器时,是否有理由期望删除我站点的会话cookie

显然是的,这是预期的行为,不,你没有理由期待这样的事情。您看到的行为似乎是在浏览器实现“会话恢复”功能的方式上经过深思熟虑的设计决定

  • 请参阅此(永久会话)会话还原可能会导致会话cookie的使用寿命过长,其中有许多重复项,并且没有解决方案
  • 或者当Chrome进程以
    WontFix

因此,简言之,无论flask有多棒,我认为服务器端对此无能为力:(

Day所说的是正确的和正确的。尽管如此,可能还有解决办法

您可以使用具有较短生存期的永久会话(永久会话生存期),并在每个请求上刷新其生存期(会话刷新每个请求)

我认为这是一个相当新的配置(0.10 IIRC)