Javascript 关闭浏览器时终止会话

Javascript 关闭浏览器时终止会话,javascript,c#,asp.net,asp.net-mvc-4,Javascript,C#,Asp.net,Asp.net Mvc 4,当用户关闭浏览器或重定向到其他页面时,我需要终止会话。 我可以看到实现此功能的以下选项: 不使用会话登录。这不是我的情况,因为我必须做很多更改,而且我还使用会话处理其他一些数据 我可以用这样的东西: window.onunload=window.onbeforeunload=(函数(){ ... }) 从这段代码中调用清理会话并执行注销的操作。 听起来很糟糕,但同样重要的是——此JavaScript代码仅在IE中工作 我可以创建一些讨厌的代码,使用一些伪调用,比如说每分钟,只是为了告诉服务器用

当用户关闭浏览器或重定向到其他页面时,我需要终止会话。 我可以看到实现此功能的以下选项:

  • 不使用会话登录。这不是我的情况,因为我必须做很多更改,而且我还使用会话处理其他一些数据
  • 我可以用这样的东西:
  • window.onunload=window.onbeforeunload=(函数(){
    ...
    })
    
    从这段代码中调用清理会话并执行注销的操作。 听起来很糟糕,但同样重要的是——此JavaScript代码仅在IE中工作

  • 我可以创建一些讨厌的代码,使用一些伪调用,比如说每分钟,只是为了告诉服务器用户仍然活着。 但这真的很恶心。它会在服务器上使用无用的负载,大量无用的调用,如果某些调用丢失(由于连接问题或其他原因),用户将注销

  • 还有其他选择吗?

    我认为这个答案是正确的:

    设置唯一的窗口id:

    window.windowIdClient = "{978d-478ahjff-3849-dfkd-38395434}"; //or another randomly generated id.
    
    将该windowId以及ip地址和会话id存储在数据库中。如果这三者不匹配,则用户将注销

    此外,如果我没有想到t.J.Crowder的选择,我会自己使用。

    你已经放弃了#4:什么都不要做,在一段合理的时间(比如20分钟)后让会议暂停;如果他们在离开20分钟后试图在该页面上执行某些操作,只需显示一个页面,告诉他们会话已过期,然后再次登录即可。这通常是最简单的选择


    如果你不想这样做,3号确实是你唯一可行的选择,但一次/分钟可能是过火了。将会话超时设置为20分钟,记住用户什么时候做了什么,如果他们空闲(比如)15分钟,代表他们进行主动呼叫。但即使这样,我也会限制我这样做的次数,在几个小时后,您可能只想将它们重定向到登录页面。

    通常,当用户关闭所有浏览器窗口时,会话会终止。
    窗口。onunload
    是一种可能性,但您不知道是否发送了请求。您是否查看了Signal?ASP.Net会话在超时后被终止,而不是在用户关闭浏览器/关闭计算机/断开internet连接时。请注意,就浏览器而言,“导航到另一页”在您自己的应用程序中包含另一个页面。