【问题标题】:How to abandon session if user X's out of browser?如果用户 X 退出浏览器,如何放弃会话?
【发布时间】:2009-09-27 06:28:23
【问题描述】:

当用户通过右上角的红色小 X 框退出会话来终止会话时,有没有办法执行 Session.Abandon()?我看到在“X out”之后用户回来并且会话变量似乎仍然存在的情况?我猜探险家让他们完好无损? (我不确定)。

【问题讨论】:

  • 所以你的页面上有一个实际的 X 按钮,它有一个调用 Session.Abandon() 的点击事件?然后用户回来并且会话变量存在? Global.asax 中的 Session_Start 中是否有任何内容?
  • 我只在用户当前按下注销链接时放弃会话。我希望能捕捉到 X out 事件。

标签: asp.net vb.net session


【解决方案1】:

您可以尝试在 OnUnload 事件中执行 AJAX 类型的回调 - 但是,正如其他人提到的,您必须知道其他选项卡正在打开(不容易),它仍然不能保证您会收到该事件.

要获得类似的效果,需要做多种事情。

  • 会话 Cookie 的到期时间应为空/空。这可确保浏览器在浏览器关闭后从其末尾删除会话。

  • 可以使用较短的 SessionState 超时值设置 ASP 会话。这意味着如果在此期间没有客户活动,则会话将过期。

这样做的副作用是,如果用户只是查看站点,而不执行活动(无论浏览器是否仍然打开) - 会话可能会过期。

这可以通过让 Javascript 计时器通过 AJAX 调用或类似调用定期 ping 回服务器来解决。 THIS 的副作用是它会产生更多的网站流量。

【讨论】:

    【解决方案2】:

    服务器通常不知道客户端上的此类事件。可以通知服务器任何事情的唯一方法是是否有请求发送回它。我想您可以在 JavaScript 中创建这样的通知,但是您还应该记住会话不是按页面而是(通常)每个用户,这意味着您需要跟踪用户打开了多少个选项卡/窗口,这样您就不会在不应该终止会话时终止会话。

    就个人而言,我通常会尝试设计 Web 应用程序,以便它们能够很好地使用默认的会话处理方式,或者提供一个特定的“注销”命令来终止会话,或者只是让它超时并死掉。

    【讨论】:

    • 如果我可以使用 jscript 或 jquery 捕获它,我可以使用隐藏按钮单击来通知服务器。不知道如何用 jscript 捕获它。
    • 我不是 javascript 专家,但我会调查 window.unload 事件。不过可能是更好的方法。
    猜你喜欢
    • 2014-03-21
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 1970-01-01
    • 2013-04-22
    • 1970-01-01
    • 2014-06-14
    • 1970-01-01
    相关资源
    最近更新 更多