我使用这种方法尽可能解决了这个问题*:
- 覆盖
SecurecookieSessionInterface.save_session()
,从覆盖版本复制代码,而不是调用它。 - 当覆盖版本的
save_session()call时save_cookie()
,使其在session_expires30
分钟后传递一个参数。这会导致超过30分钟的cookie无效。 save_session()
经常使更新的覆盖版本成为会话变量,以确保cookie及其session_expires
时间得到定期重写。(我将这个会话变量命名为'_refresh'
并在其中存储当前时间,然后仅在自上次存储的时间以来经过了几秒钟之后才重写它。此优化避免了在每个HTTP请求上重写cookie。)
在自定义项中复制Flask代码save_session()
会使此方法变得难看且脆弱,但是必须更改传递给的参数save_cookie()
。如果Flask使这变得更容易,或者至少实现了针对重放攻击的防护措施,那就太好了。



