Flask-Login:如何强制Firefox/Chrome在关闭选项卡时删除会话cookie?

6
我一直在尝试学习Flask,以及Flask-Login扩展。我可以使基本身份验证按预期工作。困扰我的问题涉及Firefox中的“显示上次的窗口和标签页”设置以及Chrome中的“从上次离开时继续”设置。我在这个网站和其他地方所做的所有研究都表明,这些设置只适用于打开的标签页。因此,如果您进行了身份验证,然后关闭了选项卡,然后关闭了浏览器,则浏览器应仅恢复在浏览器关闭时打开的选项卡的会话cookie。但是,在Firefox和Chrome上,当重新启动浏览器并导航到标记为@login_required的页面时,会话cookie仍然处于活动状态。我还应该提到,我将False传递给login_user remember参数,如下所示:login_user(user, remember=False) 我尝试使用Flask-Login扩展的新登录想法,认为在关闭浏览器之前关闭选项卡肯定会将会话标记为过时,但是没有成功。我检查了login_fresh()的值,如果登录是新鲜的,则返回true,它仍然返回True。
我发现了如何使登录在给定时间后过期的方法,使用session.permanent = True,然后设置app.permanent_session_lifetime = 'so many minutes/seconds',这完美地起作用,但这不是我想要的。
我可以接受Firefox/Chrome会记住打开的标签页的会话cookie,但我不明白为什么它们会在选项卡关闭之前记住我的站点的会话cookie。这是预期的行为吗?当我先关闭选项卡,然后再关闭浏览器时,是否合理期望会话cookie被删除?
2个回答

3
这是预期行为吗?关闭标签页后再关闭浏览器,我的站点会删除会话cookie,这是合理的吗?
显然是的,这是预期的行为,而且你不应该期望这种事情发生。你看到的行为似乎是浏览器实现“会话恢复”功能时的故意设计决策。
因此,简而言之,我认为从服务器端来说,无论 Flask 有多么棒,都没有什么可以做的,:(。请参考2009年Firefox错误(永久会话)会话恢复可能导致过长的会话cookie寿命,其中有很多重复项但没有解决方案,或者2012年Chromium错误会话Cookies在关闭Chrome进程时未清除,状态为WontFix

1
What Day说的很准确,你的期望应该是正确的。但是,可能有一个解决方法。您可以使用永久会话和短寿命(PERMANENT_SESSION_LIFETIME),并在每个请求上刷新其生命周期(SESSION_REFRESH_EACH_REQUEST)。我认为这是一个相当新的配置(0.10 IIRC)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接