• 关于同一用户不能同时登录问题的探讨(1/2)


    前言

      最近做项目的这块,客户要求是同一用户不能同时登录,对这个问题未加深刻考虑便爽快应许了。可后来就扒瞎了,正所谓外面豪气盖天,回家咬牙打滚,都怪自己开窍晚......当时想当然的是session放到application中,全局控制拉到,在登录和退出的时候进行修改,要是用户不点退出按钮,异常退出的话,再做个session监听也就拉到了呗!

      可是我错了,我抓心挠肝的真心错啦!这session的监听,destroy方法咋还等个30分钟才触发呢,真是服了气了!

    最近才有时间整理这些东西,顺便总结一下!

    正文

    先上大菜,理论的东西会在《关于同一用户不能同时登录问题的探讨(2/2)》写上,也没多少。

    一:设置web.xml中的Attribute监听(个人感觉Attribute监听比session监听更好用些,它监听的是Attribute的动作,类似是监听到了session在登录和退出操作中的动作,当然如果用session监听的话也是可以的,你要考虑登录,退出的操作,以及destroy的30分钟或者更长的滞后性)

    二:做一个只有登录后才能看到的公共页面jsp文件中,采用异步的方法访问control,采用几秒访问一次(setInterval或者递归的setTimeout),每次访问就设定一次session的有效时长,一旦异常退出或者退出,这个轮询就会断开,到时候会在短时间内做出响应,写到这,相信大家都明白了吧,也是取巧啊。

    咱这也是没法子呀,至今在网上没找到合适的解决方案,都是卡到了异常退出那了,还有说做浏览器监听的,嗯,在浏览器关闭前一刻发个请求,关了session,可是可是万恶的浏览器兼容问题呀,哪里容忍我们如此呢,浏览器监听这个法子不咋灵,不过如果浏览器固定的话,也是一个不错的解决办法呀!

    代码部分

    项目结构:

    代码我上传到csdn上了啊,不需要积分的,有需要的看官,可以猛力的点击一下:下载

  • 相关阅读:
    刷题0705 双指针思想归类
    基于Svelte3.x桌面端UI组件库Svelte UI
    Android Calendar 系统日历提醒、日程同步系统
    apk安装到系统文件夹
    Redis docker 主从模式与哨兵sentinel
    Nexus创建maven仓库导入maven依赖
    我们的力量的来源
    iOS项目嵌入Unity的View(Swift )
    面试题
    Alist+Raidriver+网盘
  • 原文地址:https://www.cnblogs.com/tv151579/p/3400510.html
Copyright © 2020-2023  润新知