【问题标题】:How to release browser session如何释放浏览器会话
【发布时间】:2023-03-30 00:00:02
【问题描述】:

我有一个网络聊天应用程序,我们正在使用 jQuery。当用户空闲或在 15 分钟内没有点击浏览器时,它应该自动销毁该特定用户的会话并将他重定向到登录页面。我该怎么做?

【问题讨论】:

    标签: jquery session


    【解决方案1】:

    你在服务器端使用什么语言?

    应使用您在服务器端使用的任何语言销毁会话...

    但让我举个例子,说明您的应用程序可能的流程。

    • 用户登录并创建具有特定到期时间的会话(php 中默认为 20 分钟)
    • 对于每个请求,您都可以检查您的会话数据或某些标志是否仍然存在
    • 如果没有,请重定向到登录页面

    正如下面的答案所述,是的,您可以销毁 cookie 或会话客户端,但我不会依赖它,javascript 并不总是可用。您必须将其留给服务器来销毁会话并清理所有数据。您必须弄清楚会话 cookie 的外观如何才能了解您使用的技术......

    但为了清楚起见,请提供有关所用技术的更多信息,也许我可以给你一个正确的答案。

    【讨论】:

      【解决方案2】:

      你需要销毁 cookie - there is plugin

      例如在 java 中大部分时间它的 cookie 名为“JSESSIONID”

      您需要查看网站制作了哪些 cookie,并使用会话信息将其杀死。

      【讨论】:

        【解决方案3】:

        您可以使用 AJAX 指向注销页面,当鼠标 15 分钟没有移动时,重定向到登录页面

        【讨论】:

        • 我不会依赖 javascript 来实现这样的功能......我知道他要求它,但不推荐
        【解决方案4】:

        您的服务器应该跟踪会话生命周期,而不是浏览器。浏览器所拥有的只是一个引用会话 ID(或类似的东西)的 cookie。

        是的,如果您要销毁 cookie 或 cookie 中的会话 ID,则用户在下次联系服务器时似乎已注销。但是,依赖浏览器进行会话管理是获得不一致结果的好方法。

        会话存在于您的服务器上,客户端仅引用它。您必须在服务器上对其进行管理,以使其可靠。例如,在会话中保存“lastContactTimestamp”的时间戳。当客户端发出请求时,检查当前时间戳是否超过“lastContactTimestamp”的 15 分钟。如果是,则重定向客户端重新登录。如果不是,将“lastContactTimestamp”更新为当前时间戳,然后提供客户端的请求。

        【讨论】:

          【解决方案5】:

          使用元刷新重定向,这将在 900 秒内将浏览器自动重定向到 somelogOutUrl。这假设您将在这段时间内刷新页面。如果您的应用程序主要使用 ajax 调用来获取新内容并且很少刷新整页,那么您将需要另一个选项。

          <meta http-equiv="refresh" content="900;url=somelogOutUrl">
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2012-02-27
            • 1970-01-01
            • 1970-01-01
            • 2011-07-20
            • 2018-09-20
            • 2016-05-10
            • 2012-04-11
            • 2018-09-19
            相关资源
            最近更新 更多