java web实现限制账户登陆方案解决

参考:https://blog.csdn.net/cl534854121/article/details/76121156

实现功能:同一账户如果在不同地点多次登陆,新的登陆会将旧的登陆者挤出,旧登陆者实现页面跳转,类似qq登陆功能

解决思路:

1.用户登陆,验证账号密码

2.建立一个存储username和sessionId的map,验证过账号密码的用户,对其用户名在map中进行判断,如果找不到username或者session为空,则视为第一次登陆,将其username和sessionId记录,并将这个session进行保存,设置session的islogin标志

3.当同一账号的新用户登陆,验证过账号密码后,map中相应的username存有原来的sessionId,则判断该登陆者为新的登陆者,利用sessionId将旧登陆者的session找出,并设置新旧两个session的isLogin属性

4.拦截器对请求进行拦截,判断isLogin属性,进行页面跳转

//前面为验证用户名和密码
MySessionContext myc = MySessionContext.getInstance();
// 账号密码验证成功,判断是否已经登陆.如果已经有账号登陆,删除原有,记录新登陆的账号
		if (LoginUserMap.isInLoginUsers(username, session.getId())) {
			// 根据username获得上次登陆的sessionId,并根据sessionId获得sess
			String sessionId = LoginUserMap.getSessionId(username);
			System.out.println("得到的上次sessionId为:" + sessionId);
			HttpSession sess = myc.getSession(sessionId);
			// 将新登陆的加入map,旧登陆的更改isLogin
			sess.setAttribute("isLogin", "false");
            //根据sessionId将原有记录移除
			LoginUserMap.removeUser(sessionId);
            //将新登陆者信息加入map
			LoginUserMap.setLoginUs
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值