用户不能同时登陆

对于用户登录不能同时登录的做法,我的想法是:

一、策略
a、后面的登录踢掉前面的登录
b、给前面的登录提示或者将前面的登录重定向到登出页面

二、做法
a、在ServletContext中增加一个HashMap对象,记录登录的用户名及其对应的session对象,其中key为用户名,value为session对象,这样可以利用HashMap的特性快速找到key,尤其是用户量很大的情况下。
b、当一个用户输入正确的用户名和密码后,到a中生成的HashMap中查找该用户名,如果没有,则说明这个用户名还没有登录,将用户名及对应的session添加到HashMap对象中;如果有,则到c。
c、取得HashMap中key中对应的session对象,如果session对象不为空,则使用invalidate()方法清理该session对象,同时增加key的value置为现在session对象。
d、增加一个HttpSessionListener监听器,监听session摧毁时要执行方法,取得当前session对应的用户名在HashMap中session,比较两个session是否相同,如果是,则清除HashMap中的key。(如果不需要统计在线人数,d步可以没有)。

需要注意的一点:当执行invalidate()方法时会触发HttpSessionListener监听器的sessionDestroyed方法,在d步中,已经清除了key,所以c步中要添加key而不是修改key。

HashMap对象可以在应用初始启动时生成。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值