在处理WEB时,有时需求可能是不能让同一个用户在不同的地方登录,本人针对这个问题进行处理,一般网上用的方法一般都是通过什么数据库阿,要么就是什么JS,第一个思路就是现在大多人认为用数据,方法就是在数据库用户表比如Users表中添加一个字段 bit 当有人用这个用户登录的时候就把它变成1,
本人认为这个方法不好,原因有两个:第一 数据库更新问题,需要很大的性能 而且如果大量用户这样做,后果不堪设想。第二:服务器无法判断设么时候用户推出登录,如果用JS 无法解决断网问题,还有就是如果一个用户在同一个计算机上登录两次那么那么第二次将不能登录,这倒可以理解,如果一个用户关闭浏览器 服务器不知道,这个用户还向登录,后果就是登不上去了,所以本人的方法就是解决这些问题
解决方案:
思想:就是用类似QQ的方法,如果一个用户再次登录,退出第一个登录的用户,保留第二个
存储:利用用户池java.util.Map作为用户池容器,里面放着用户标示和sessionId,这个容器放到application对象中介可以;
原理:当用户登录时直接put进去就可以了,如果这个对象存在就会被更新
其他:编写listener用HttpSessionAttributeListener地实现 处理session属性的removed在removed的时候清楚这个用户在对象池中的状态
检查:编写一个用户Filter来检查请求的sessionId和用户池是否匹配就可以了如果不匹配清楚这个session中的用户对象 迫使下线
本文作者:佚名 来源:qqraeadm.com
CIO之家 www.ciozj.com 微信公众号:imciow
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。