要求在用户关闭IE浏览器的时候要把用户的session清除?
用户在关闭IE浏览器时session会自动清除啊,不用自己写代码,不信可以关闭之后再打开IE,看session还在不在。

解决方案 »

  1.   

    你的意思应该是将客户的cookies清楚吧,如果是把Session清除的话,正如楼上所说,它们是自动清除的。
      

  2.   

    但服务器端的不会被清除吧(直到服务器端超时才失效)之所以再打开IE后不行是因为产生了新的session,所以当然不行,若能模拟出旧的session(直接操作底层http协议或TCP/IP)一样可行的
      

  3.   

    正如楼上所说,我的session不是用客户端的cookies实现的,事实上我在servlet中已经禁用了cookies。session的机制是通过客户端的URL重写实现的,所以用户的sessionID是一直暴露在IE的地址栏处,如果用户关闭IE的时候不把服务器端的用户sessionID清除掉,只要用户下次登陆的时候,直接模拟出上次的URL,就可以免去用户人证的过程了,很不安全的。
      

  4.   

    如你所说的 onUnload,在里面加上判断 window.closed 看看
      

  5.   

    window.closed 好像不行,无论是关闭IE还是刷新返回都是false
    代码如下:
    <html>
    <body onUnload="alert(window.closed);return true;">
    </body>
    </html>
      

  6.   

    打开一个IE时,服务器端自动为该客户端建立一个sessionid,对应每个请求该客户端(一个IE)都使用的这个sessionid,直到这个IE关闭或logout(在程序中将该session清除)。如果你在服务器端的action设置好的话,客户端根本没办法看到这个sessionid的,就算sessionid得到了,因服务器中已将原sessionid清除,所以也不会产生作用。
      

  7.   

    不是把,若在服务端没有显示的调用session.invalidate()服务器为该用户分配的session是不会清除的,除非超时。session的超时一般都定在30分钟左右,换句话说,如果用户关闭窗口,而服务器端没有调用session.invalidate(),那么用户的数据在超时之前将一直有效,一旦在这期间某个用户窃取了原先用户的sessionid,这它便可以冒充原来的用户访问它的信息了
      

  8.   

    可以考虑这样一个解决方案:
    在客户端关闭浏览器的时候,调用服务器的登出操作,使服务器端的session失效,客户端的session是随着浏览器关闭自动失效的
    具体可以在javascript里调用一个url或form post
      

  9.   

    怎么知道客户端关闭浏览器?用onUnload事件吗,它区分不了刷新还是关闭啊!
      

  10.   

    如果使用java的话,我可以建议你使用SessionTimeoutNotifier
    我就是这样做的。。你可以参看相关的文档,java的帮助都有。