最近在研究网站的开发,其中遇到一个问题就是同一账号重复登录。要求是同一账号只能一个地方登录,重复登录时后者挤掉前者,前者提示被强制退出。根据这一需求我在网上搜了很多资料,参考许多前辈的总结,最终自己研究出来一个版本,我采用的获取sessionId,以sessionId识别是否为重复登录。
1.在用户表加一列或单独建一张关联表,用于记录当前登录的sessionId,每次登录这一列值都要做修改。
2.用户登录,加一个拦截器filter,拦截器的作用是页面操作前判断是否重复登录。
首先根据输入的用户名和密码做验证,通过验证查询用户信息。在用户信息不为空的前提下,比较表中的sessionid和浏览器session获取的getId(),判断两个值是否一致,若一致,则通过 正常走流程,若不一致,则返回登录页面,session设置msg,提示“账户失效或异地登录”;
3.登录成功后,修改用户表的sessionId值为当前浏览器session获取的getId()。
这样每次登录都会通过filter对用户的用户名、密码以及sessionId做验证,一旦有问题就返回登录页面,提示相关问题,否则成功即记录sessionId,以便下回验证。
以上是我关于账号重复登录问题的总结。