【问题标题】:Exclude Endpoint for Flask Session Timeout为 Flask 会话超时排除端点
【发布时间】:2023-03-29 05:05:02
【问题描述】:

我有一个 Flask 应用程序,它使用 Flask-Sessions 来管理我的会话。

flask.permanent_session_lifetime = timedelta(minutes=30)

活动 30 分钟后,会话将终止,我的用户必须再次登录才能继续使用该应用程序。

但是,我想从该会话超时行为中排除特定的 URL 端点。我的意思是,我在我的应用程序中进行了持续轮询,其中 Web 客户端每隔 30 秒调用一次 GET /status 端点。页面每 30 秒向服务器请求更新任务状态,更新进度条等。

由于上述 GET /status 调用不断被调用,用户可能完全离开计算机,并且会话永远不会超时,因为 GET /status 调用不断轮询。

有没有办法可以在超时行为中排除这个端点,这样对 GET /status DO NOT 的调用会延长当前用户会话的寿命?如果不是,在这种情况下推荐的方法是什么?我宁愿不必在此应用程序中实现我自己版本的 Session 行为。

【问题讨论】:

    标签: python session flask


    【解决方案1】:

    你必须选择:

    1. 子类SecureCookieSessionInterface并覆盖should_set_cookie方法
    2. 注册after_request处理程序,如果url匹配,则删除“Set-Cookie”标头

    【讨论】:

    • 对于阅读本文的任何人,您都需要第一个解决方案。如果 Flask Sessions 打算添加 Set-Cookie 标头,那么您将无法在 after_request 处理程序中删除该标头。
    • 在第二种解决方案中,您必须返回新响应,该响应将是原始响应的副本,但此标头除外。在我看来这是太多的努力,但有这样的可能性:)
    猜你喜欢
    • 1970-01-01
    • 2013-09-10
    • 1970-01-01
    • 1970-01-01
    • 2011-06-06
    • 2011-04-30
    • 1970-01-01
    • 1970-01-01
    • 2010-12-05
    相关资源
    最近更新 更多