怎样使关闭bbin浏览器查看session后session不失效

下次自动登录
现在的位置:
& 综合 & 正文
如何让用户在关闭浏览器后在1分钟后,Session失效
在写一个客户的B/S结构应用程序时,突然发现一个技巧,不知道是否是MS的一个BUG,给相关的有研究的朋友原先考虑写一个检查Session的类,Session失效后,必须转向登陆页面,可每一个调用该类的页面,在不同的WEB路径下,所以转到登陆页面的URL都不同,每个页面都要调用和设置登陆页面路径,所以实际应用就放弃了这一想法后来考虑到不如写一个检查Session失效的页面,由客户端每一秒都刷新一下,就可以在一个页面中调用,但通过FRAME嵌入该ASPX老时有请求发出,不太好看,虽然该页面是隐藏的.再后来,想想,就用一个页面,使用无刷新技术,去请求该失效Session的页面就可以了,此处的无刷新技术使用了xmlhttp对象,没有使用WEBService技术.(由于客户的BS系统,使用FRAME框架,最上层的页面是显示软件名称,用户登陆信息的,所以调用就放在该页面中)
让我们来看看代码,主要是客户端的Javascript脚本程序
&script language="javascript"&
var idx=0;
function ChkSession()
var Http = new ActiveXObject("Microsoft.XMLHTTP");
Http.open("GET","ChkSessionOut.aspx",false); //检查Session失效的页面
Http.send();
var str = Http.responseT//执行ASPX后的返回结果
//document.all("ConvertResult").innerHTML = str+
if(str=="notnull")
//alert(str);
alert("会话值跟踪时间超时,请重新登录...");//这段代码一直没有运行,往下看,你就知道了
location.href = "longin.aspx";
window.setTimeout('ChkSession()', 1000 );//每一秒钟,请求一次ChkSessionOut.aspx
这段CODE,我放在&HEAD&&/HEAD&标签之间,然后在BODY加载时,调用该函数,如下:&BODY onload="ChkSession();"&
ChkSessionOut.aspx.cs的代码如下ChkSessionOut.aspx文件中的HTML标签全部被我删除,这样一来执行下面的代码,就只有结果的输出了
private void Page_Load(object sender, System.EventArgs e)
if(Session["sUserID"]==null)
Response.Write("isnull");
Response.Write("notnull");
为了测试以上程序,我将WEB.Config的内容更改,将SESSION设置段,改成一分钟后失效WEB.Config文件的一部分,设置一分钟后失效SESSION的地方,如下:&sessionState mode="InProc" stateConnectionString="tcpip=127.0.0.1:42424" sqlConnectionString="data source=127.0.0.1;Trusted_Connection=yes" cookieless="false" timeout="1"/&
然后我运行代码,我特地在原来的IE上,使用菜单新打开一个IE窗口,为保证他们是检查同一个SESSION,在地址中输入ChkSessionOut.aspx,程序运行后,发现秘密了,一分钟后,我点刷新ChkSessionOut.aspx的页面,居然输出notnull,我想到,对了,我每秒都在向这个页面发请求,所以没失效的原因,然后我将有无刷新技术的页面关闭,过一分钟后,发现输出isnull,说明Session失效了,这个发现好,我吃了一惊!想到VS.NET好好好,它就是一个好工具,哈哈!我的环境IIS5.0,Win2000,VS.Net2003
然后我有设置30秒自动请求,无刷新技术的主页面不关,SESSION不失效,一关闭还是1分种后就失效,考虑到了1分钟/30秒是整数,设置成50秒,无刷新技术的主页面不关,它过1分种,失效了!哈哈,完全明白了!1分钟/50秒非整数,所以失效,啊,是不是BUG,大家给评价评价!
【上篇】【下篇】onunload调用下面js函数
&script language="javaScript"&function removeline(){if(event.clientX&0&&event.clientY&0)& {document.write('&iframe width="100" height="100" src="page/removeline.jsp"&&/iframe&&OBJECT classid=CLSID:A-11D0-A96B-00C04FD705A2 height=0& id=WebBrowser width=0&&/OBJECT&');document.all.WebBrowser.ExecWB(45,1);}}&/script&if(event.clientX&0&&event.clientY&0)判断浏览器是关闭还是刷新&,因为刷新也会调用onunloaddocument.all.WebBrowser.ExecWB(45,1);是无提示的关闭浏览器
removeline.jsp 加上invalidate()代码就可以了
看到这个标题觉得很兴奋,终于可以解决困扰已久的问题了
可是有些地方我还是不明白
removeline.jsp 加上invalidate()代码就可以了
invalidate()的代码是什么??
classid=CLSID:A-11D0-A96B-00C04FD705A2
这个id就是指当前session么?所有的session都是这个固定id么?
非常希望能得到楼主的解答&&&&
&re: 关闭浏览器使session立即失效的方法
invalidate()就是session.invalidate()清除session]
classid=CLSID:A-11D0-A96B-00C04FD705A2
这个是调用不弹出对话框的方法,实际是调用系统的方法如下
document.all.WebBrowser.ExecWB(45,1);
&&&&
&re: 关闭浏览器使session立即失效的方法
好文,感谢&&&&
&re: 关闭浏览器使session立即失效的方法
如果用户打开了多个页面,如果他关闭其中一个不需要的页面,那么他不就又要被程序提示重新登陆?&&&&
&re: 关闭浏览器使session立即失效的方法
难道每个页面都要加这个?如果是使用多页面浏览器,在网站打开多个页面怎么办?&&&&
&re: yidinghe
这个适合聊天室类的应用
不大清楚你想实现什么样的功能?&&&&
&re: 关闭浏览器使session立即失效的方法
但是对firefox是没有用的&&&&
&re: 关闭浏览器使session立即失效的方法
firefox,ie7等,event.clientX不识别&&&&急,求高手指导: 浏览器关闭时,session 立即失效问题
[问题点数:100分,结帖人beautifullotus]
急,求高手指导: 浏览器关闭时,session 立即失效问题
[问题点数:100分,结帖人beautifullotus]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2015年2月 Java大版内专家分月排行榜第二2014年3月 Java大版内专家分月排行榜第二
2014年9月 Java大版内专家分月排行榜第三2014年6月 Java大版内专家分月排行榜第三2014年2月 Java大版内专家分月排行榜第三2013年11月 Java大版内专家分月排行榜第三2013年10月 Java大版内专家分月排行榜第三
匿名用户不能发表回复!|没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!赞助商链接
我的服务中有一个用户注册网页,注册后向servlet发送post请求,然后servlet建立session,设置一些用户访问属性。当用户以后再次访问服务的时候,我希望服务能够识别出客户,找出以前建立的session,然后读取它的属性。实际效果是,如果我不关闭浏览器,以后再次访问时服务能够找出以前建立的session,就是说,它还认识我。但是如果我关闭了浏览器,以后再次访问时服务会建立一个新的session,导致读取属性时抛出NullPointerException,也就是说,它已经不再认识我了。可是许多网站,只要你注册过一次,以后你怎么访问它都能认出你!我应该怎么做呢?我把压缩包放在这里,请大家帮我看看,谢谢!
请设定session的存活期,否则系统Mo 认关闭browser后,session die
session.setMaxInactiveInterval(-1);我设定的session永久不会timeout! 可还是不管用!
服务器端并不能捕获客户端的浏览器关闭事件,因此你关闭浏览器以后,服务器端那个Session还是存在的,要超时以后才被回收,启动一个新的浏览器会启动一个新的session,所以他不认你了session永不过期是愚蠢透顶的做法,session将只增不减,你有多少内存?自动登录都是用Cookie实现的,登录后给客户端一个Cookie,以后浏览器每次都发送发送那个Cookie给服务器端,然后实现自动登录》》可是许多网站,只要你注册过一次,以后你怎么访问它都能认出你!我应该怎么做呢?你把浏览器的Cookie都清除掉,看他下次还认识你不?实际上session通常也是通过Cookie实现的
session靠Cookie来维持,每次给客户端一个cookie里面存放session id,然后请求的时候,服务器根据session id找到对应的session。这个cookie是在浏览器关闭的时候就实效的,自动登录的cookie需要设置成为关闭浏览器后还有效的那种。
赞助商链接
赞助商链接
最佳分辨率
OpenSource
Code & 2002-20

我要回帖

更多关于 微信浏览器 session 的文章

 

随机推荐