【问题标题】:Django Session related queryDjango Session 相关查询
【发布时间】:2015-09-02 01:51:06
【问题描述】:

我为我的团队创建了一个 Web 应用程序 (Django),其中文件首先从 PDF 转换为 .txt,然后在 Excel 表中捕获有意义的信息。当用户提交请求时,我的命令行上也会启动一些进程(服务器托管在我的 PC 上)。问题是当用户关闭他的会话(选项卡)时,该进程仍在我的命令行上运行。

由于此服务器将在本地运行(我的电脑),我如何知道用户已关闭他的浏览器(会话)并相应地关闭我的服务器?

【问题讨论】:

  • 您不应该在您的 PC 上运行生产应用程序。 Heroku 或 AWS 不是一个选项吗?
  • 这个网络应用程序将在本地运行,因为我已经为我的团队创建了它,它需要访问共享驱动器。
  • 你刚刚描述了一个带有在线存储的 webapp
  • 共享驱动器是本地的,服务器将在我的 PC 上运行。这是一个简单的应用程序,但我想在用户关闭他的选项卡(会话)时关闭我的服务器。
  • 据我所知,关闭选项卡!= 关闭会话取决于您处理会话的方式。你是如何运行应用程序的?

标签: python django session web-applications request


【解决方案1】:

取自link

当通过浏览器和您的服务器(在本例中为 Jboss 和 liferay)创建会话时,它会在客户端的浏览器上放置一个标识会话的 cookie。当浏览器关闭时,该 cookie 可能设置为过期。因此,当您重新打开时,浏览器不再具有该 cookie,因此它无法识别任何会话。所以,从技术上讲,服务器端的会话在技术上并没有关闭。当会话到期时会发生这种情况,通常是从不活动开始的一段时间。对于会话,通常有三种方式在服务器端销毁它 - 注销(应用程序销毁会话),一段时间的不活动(可能是 15 分钟或其他),或“硬”超时,您可以例如,希望您的用户始终每 8 小时重新登录一次。

所以换句话说,即使浏览器关闭,服务器也不知道它,并且会话仍然有效,直到它过期。仅需要登录 bc/ cookie 在浏览器关闭时被刷新。现在,当一个标签页关闭时,浏览器不一定会关闭,所以它仍然有那个 cookie。

做你想做的事情的一种方法是有一个 Javascript 钩子,当标签关闭时被调用(就像一个事件)。这个 javascript 可以调用一个 servlet 或 web 服务,让它知道破坏会话。

【讨论】:

    猜你喜欢
    • 2014-09-04
    • 1970-01-01
    • 2020-07-16
    • 1970-01-01
    • 2023-03-25
    • 2018-09-13
    • 2011-09-25
    • 2018-10-14
    • 2021-01-24
    相关资源
    最近更新 更多