浏览器关闭,让session销毁

时间:2022-01-19 13:16:54
在关闭浏览器时,想发送请求让session销毁,用 onbeforeunload 事件监听浏览器关闭,但刷新页面时也被监听到了,应该怎么做呢

8 个解决方案

#1


友情绑定 一下 。另:可以把你的需求提出来,上面的做法  不太符合常规,这是客户端去控制服务器  ,不提倡这种做法

#2


   可以让服务器去检查上次访问时间,超过一定时间认为已退出,销毁session。
   如果非要用客户端控制的话,监听到onbeforeunload发送ajax请求销毁session,页面加载时再去请求新建session有点得不偿失。

#3


当用户关闭浏览器,又重新打开,想再次登录, 在这种情况下,上一个session还没销毁,而我使用了HttpSessionAttributeListener监听session关闭后移除ServletContext域里用户的登录状态。 如果关闭浏览器,但session没有销毁,再次登录时,就提示用户已在线了

#4


js 判断不了 退出当前网站。

服务器 设置session 过期时间(设置短一点) 和 session end 事件去处理

#5


引用 3 楼 luoqiaowen 的回复:
当用户关闭浏览器,又重新打开,想再次登录, 在这种情况下,上一个session还没销毁,而我使用了HttpSessionAttributeListener监听session关闭后移除ServletContext域里用户的登录状态。 如果关闭浏览器,但session没有销毁,再次登录时,就提示用户已在线了

你不能判断有session就自动登入吗?

#6


onbeforeunload 事件不只是监听关闭窗口,刷新也是会被监听的;你要么在onbeforeunload 事件函数里判断是关闭还是刷新;要么就用其他的监听事件

#7


一个判断页面是否真的关闭和刷新的好方法:

window.onbeforeunload=function (){
if(event.clientX>document.body.clientWidth && event.clientY < 0 || event.altKey){
alert("你关闭了浏览器");
}else{
alert("你正在刷新页面");
}
}

#8


session自己是会自动过期的,设置过期时间就好了

#1


友情绑定 一下 。另:可以把你的需求提出来,上面的做法  不太符合常规,这是客户端去控制服务器  ,不提倡这种做法

#2


   可以让服务器去检查上次访问时间,超过一定时间认为已退出,销毁session。
   如果非要用客户端控制的话,监听到onbeforeunload发送ajax请求销毁session,页面加载时再去请求新建session有点得不偿失。

#3


当用户关闭浏览器,又重新打开,想再次登录, 在这种情况下,上一个session还没销毁,而我使用了HttpSessionAttributeListener监听session关闭后移除ServletContext域里用户的登录状态。 如果关闭浏览器,但session没有销毁,再次登录时,就提示用户已在线了

#4


js 判断不了 退出当前网站。

服务器 设置session 过期时间(设置短一点) 和 session end 事件去处理

#5


引用 3 楼 luoqiaowen 的回复:
当用户关闭浏览器,又重新打开,想再次登录, 在这种情况下,上一个session还没销毁,而我使用了HttpSessionAttributeListener监听session关闭后移除ServletContext域里用户的登录状态。 如果关闭浏览器,但session没有销毁,再次登录时,就提示用户已在线了

你不能判断有session就自动登入吗?

#6


onbeforeunload 事件不只是监听关闭窗口,刷新也是会被监听的;你要么在onbeforeunload 事件函数里判断是关闭还是刷新;要么就用其他的监听事件

#7


一个判断页面是否真的关闭和刷新的好方法:

window.onbeforeunload=function (){
if(event.clientX>document.body.clientWidth && event.clientY < 0 || event.altKey){
alert("你关闭了浏览器");
}else{
alert("你正在刷新页面");
}
}

#8


session自己是会自动过期的,设置过期时间就好了