【问题标题】:closing all web pages on session time out在会话超时时关闭所有网页
【发布时间】:2009-12-18 22:02:06
【问题描述】:

当asp.net应用程序中的会话超时时,我们需要关闭所有已经被用户打开的网页。

每个页面都有退出链接。当用户单击该链接时,主页将重定向到该页面。

在这种情况下,其他打开的页面也需要关闭。

我们怎样才能做到这一点?

【问题讨论】:

  • 我认为你可以重定向到你的主页
  • 你不能关闭所有页面
  • 问题是用户认为他们的会话结束了。因此,将其他打开的页面与数据保持原样。在这里,我们想知道数据安全性。

标签: asp.net webbrowser-control session-timeout


【解决方案1】:

对于所有页面:

  1. AJAX 回调服务器检查 Session 是否过期。
  2. 从 AJAX 解析结果
  3. 如果会话结束,则关闭窗口或重定向到注销页面。

【讨论】:

  • 对服务器的 AJAX 调用不会使会话保持活动状态,尤其是在它检查当前会话时?
  • 我同意 Razzie... 但是如果 AJAX 调用 web 服务会怎样... .. ??
  • 然后可以手动处理会话终止,以补充 ASP.NET 会话终止。
  • AFAIK 您只能使用WebMethod 属性在网络方法上设置EnableSession。如果启用它,会话将保持活动状态。如果你禁用它,你不知道会话是否还活着......
【解决方案2】:

再想一想...我们可以使用@thephpdeveloper 所说的内容,特别是当用户正式退出时...(例如单击退出按钮)一旦正式退出发生...这样的Ajax回调可以是已使用,因为会话将有效但不会有任何用户...使用它我们可以向页面发出信号并关闭浏览器窗口

【讨论】:

    【解决方案3】:

    正如 Razzie 所说,对同一个 Web 应用程序执行 AJAX 回调将使会话保持活动状态。使用网络服务也不能解决问题。

    此解决方案避免保持会话活动:

    • 将每个会话存储在数据库中。这可以在Global.asax 或登录后的Session_Start 事件中完成。
    • Global.asax 文件中的Session_End 事件中或注销后从数据库中删除超时会话。
    • 不同的网络应用程序进行定期 AJAX 回调,例如在子域上运行的网络,如果会话仍然存在,则检查数据库。

    我建议您使用 SessionID 来识别会话。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-01
      • 1970-01-01
      • 2013-06-10
      • 2012-06-02
      • 1970-01-01
      • 1970-01-01
      • 2013-04-21
      • 2012-07-17
      相关资源
      最近更新 更多