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

dow*_*wlf 5 python cookies session flask flask-login

我一直在尝试学习Flask,以及Flask-Login扩展.我可以按预期进行基本身份验证.让我难以理解的问题涉及Firefox中的"显示我上次的窗口和标签"设置以及Chrome中的"继续我离开的位置"设置.我在本网站和其他地方所做的所有研究表明,这些设置仅适用于打开的标签.因此,如果您通过身份验证然后关闭选项卡,然后关闭浏览器,则浏览器应仅恢复浏览器关闭时打开的选项卡的仅会话cookie.但是,对于Firefox和Chrome,当再次启动浏览器时,仅会话cookie仍处于活动状态,并导航到标记为@login_required的页面.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是否合理?

Day*_*Day 3

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

显然是的,这是预期的行为,不,你没有理由期待这样的事情。您所看到的行为似乎是浏览器实现“会话恢复”功能的方式的故意设计决策。

  • 请参阅2009 年的 Firefox bug (eternalsession) 会话恢复可能会导致会话 cookie 寿命过长,其中有许多重复项且没有解决方案。
  • 或者, Chrome 进程关闭且状态为WontFix

所以,简而言之,我不认为你可以从服务器端对此做任何事情,无论 Flask 多么棒:(