我使用的是SSH2框架,做安全测试需要限制:1.单个用户的多重并发会话限制 2. 限制单客户端同时登录多个用户 。这两个内容,没有采用在web.xml中配置过滤器的方式,我处理的方式是如果一个用户在第二台电脑上登录了就踢掉上一台电脑登录的用户,如果同一个台电脑有第二个用户登录 ,就踢掉之前登录的帐号。
所以,是在登录的方法中做的处理。
在登录方法中加入如下两行语句,作为程序的入口:
SessionListener.isAlreadyEnter(getHttpRequest().getSession(),this.getUserCode(),loginUser);
getHttpRequest().getSession().setAttribute("isLoginIn", "LoginIn");
在SessionListener类中做相关的踢出处理:
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import javax.servlet.ServletRequestEvent;
import javax.servlet.ServletRequestListener;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionAttributeListener;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
import org.apache.struts2.Ser

本文介绍了如何在SSH2框架下,通过编程方式实现实时限制单个用户并发会话以及禁止同一客户端同时登录多个用户的功能。在登录处理方法中,当检测到用户在另一设备或已有会话时,将强制结束先前的会话,确保会话和登录的唯一性。
8904

被折叠的 条评论
为什么被折叠?



