huang_ftpjh 2019-08-02 21:00 采纳率: 0%
浏览 2926
已采纳

如何实现关闭浏览器就能执行退出登录

前辈们,如何实现关闭浏览器就能执行退出登录

下面是关闭页面会执行方法,但我想要的是关闭浏览器

<body onbeforeunload="return delSession()">  
    <script type="text/javascript">
        function delSession() {
            alert("下面的ajax有运行无法弹出窗口");

            $.ajax({
                type: "POST",
                url: "<%=basePath%>user/logout.do",
                async: false
            });
            window.location='jsp/logout.jsp';
            return undefined;
        }

    </script>
  • 用了 websocket,报错太多。。。抛弃了
  • 用了 session ,失效时间太长等不了他销毁

若使用cookie 机制,
如果在登录状态关机了,前台的检查cookie存在的方法没有运行(也就没有执行退出登录操作) ,那么只能等session过期时销毁登录?

求助大佬们

  • 写回答

5条回答 默认 最新

  • huang_ftpjh 2019-08-02 23:00
    关注

    感谢大佬回复, 浏览器关闭 cookie是销毁但是 后台不知道**销毁**!
    我想实现一个账号登录后 相同IP地址的允许再登录,
    其它相同账号不同IP的登录会提示用户已存在登录

    这个逻辑已经实现了,就是登录成功后保存status状态为1 同时保存IP,当用户退出登录时重置为0 (session到期时也执行该操作)
    当相同账号登录时,检查状态和IP即可

    User user  = userMapper.selectLogin(username,md5Password);
            if(user == null){ //前面的用户没查出来,逻辑上就不可能存在密码
                return ServerResponse.createByErrorMessage("密码错误");
            }
            if (user.getRoleid() != 0) {
                return ServerResponse.createByErrorMessage("非管理员,登录无效");
            }
    
            String ip = CusAccessObjectUtil.getIpAddress(request);//当前登录设备的IP
                    if (user.getStatus() == 1) {
                if (user.getIp() != null && !user.getIp().equals(ip)) {//相同账号第二次登录,如果IP不为空 与当前登录IP相同  放行,  否则
                    return ServerResponse.createByErrorMessage("用户已在 "+ user.getIp() + " 登录 ");
                }
            }
    
            //登录成功为1  status  检查如果为1 不允许登录
            userMapper.updatestatus(1,user.getId());
    
            USERSESSION = username;
    
            userMapper.updateIP(ip,username);//更新IP  退出登录时删除IP
    

    关于cookie的销毁

    <%
              Cookie   killMyCookie   =   new   Cookie("token",   null);
              killMyCookie.setMaxAge(0);
              killMyCookie.setPath("/");
              response.addCookie(killMyCookie);
            %>
    
    

    ^-^ 再问一下: 我想捕捉浏览器关闭( 也就是系统页面消失 )执行销毁session,但不知道咋搞

    非常不想用 websocket , 也不想用redis

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘