【问题标题】:How to check if the Session expires using JavaScript如何使用 JavaScript 检查 Session 是否过期
【发布时间】:2011-08-27 21:29:26
【问题描述】:

一旦会话过期,我想将用户从应用程序中的任何位置重定向到“登录页面”。

我如何使用 JavaScript 来实现这一点?

【问题讨论】:

  • 为什么必须使用 JavaScript?如果你可以检查它,你会怎么做?使用 setInterval?
  • 是的,如果会话处于非活动状态,我希望用户重定向到登录页面

标签: javascript session-state


【解决方案1】:

没有必要定期检查会话是否过期,您可以做的最好的事情是检查前端触发事件的时间,例如在提交之前/点击之前等。 服务器时间是我们需要管理以提供更好的应用性能的关键资源。

【讨论】:

    【解决方案2】:

    一个典型的会话实现需要两件事:

    1. 浏览器中的 cookie
    2. 与 cookie 中存储的号码相关联的会话的服务器端记录

    这些 cookie 通常设置为会话 cookie。它们在浏览器关闭时过期。因此,您无需担心测试它们来实现这一点。

    要确定会话在服务器上是否仍然有效,您需要(定期)向服务器发出 HTTP 请求(您可以使用 Ajax 执行此操作)并让服务器响应有关会话生命周期的信息.

    一个简单的解决方案是返回真或假,如果为假则重定向(通过设置location.href)。

    更有效的解决方案是返回会话的剩余生存时间,并使用该信息确定下一次检查的时间(如果为 0,则重定向)。 更多

    【讨论】:

    • 但通常服务器会使用超时来验证会话,因此每当用户发出请求时,超时都会重置为 0。因此,如果您向服务器发出定期请求,会话将永远不会终止..您必须更改服务器管理会话的方式..或者我错了=D
    • 你能告诉我如何定期检查会话是否处于活动状态。我知道你告诉我的逻辑已经用 settime 实现了,但在此之前我需要检查会话是否在我的浏览器..
    • setInterval 和您选择的 Ajax 库以及适当的服务器端逻辑,用于您的会话管理。
    • @pleasedontbelong — 是的,任何会话重置机制都必须被绕过。
    • Dorward - 太糟糕了,因为重置每个请求的超时时间是保留会话的好方法,至少比告诉用户他有 30 分钟保持连接更好。如果你真的不需要ajax,你只需要一个cookie并定期检查他的生命周期..但我想这是在不改变主要思想的情况下解决这个问题的唯一方法。干杯
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-08
    • 1970-01-01
    • 1970-01-01
    • 2017-08-15
    • 2021-02-27
    • 1970-01-01
    • 2010-10-26
    相关资源
    最近更新 更多