码迷,mamicode.com
首页 > 编程语言 > 详细

struts2+spring防止用户重复登录(单点登录)

时间:2015-04-18 11:40:03      阅读:266      评论:0      收藏:0      [点我收藏+]

标签:session 防止用户重复登录

所有人都知道用户登录session是一个很好的选择,而且几乎都是用的session,但是session是不能跨窗口使用的,每打开一个浏览器,系统会赋予一个新的sessionID,而每个sessionID是不同的,也就是说你每次登录用的都是不同的session,而不是你之前登录使用的那个。那么如果你要在全域只能使用一个用户ID,那怎么办呢?

我们可以通过自定义一个sessionListener,用这个sessionListener实现HttpSessionAttributeListener,实现该接口需要实现三个方法,attributeAdded、attributeRemoved、attributeReplaced。在这里我们只需实现前两个方法。首先我们用一个list容器装当前已经登录的用户,接着在其他用户登录的时候判断是否为之前已经登录的用户,如果该用户已经登录,你可以选择友情提示该用户已经登录,你也可以直接将前面已经登录的用户挤出去,用当前登录用户。

具体代码如下:


public class sessionListener implements HttpSessionAttributeListener{
	public static List list = new ArrayList();  
	
	public void attributeAdded(HttpSessionBindingEvent arg0) {
		// TODO Auto-generated method stub
		if(arg0.getName().equals("user")||arg0.getName().equals("backUser")){
			User user=(User)arg0.getValue();
			list.add(user);
		}
		
	}

	public void attributeRemoved(HttpSessionBindingEvent arg0) {
		// TODO Auto-generated method stub
		 try {  
	            int n = 0;  
	            User u = (User) arg0.getValue();  
	            for (int i = 0; i < list.size(); i++) {  
	                User user = (User) list.get(i);  
	                if (u.getId().equals(user.getId())) {  
	                    n = i;  
	                    break;  
	                }  
	            }  
	            list.remove(n);  
	        } catch (Exception e) {  
	        }  
	}

	public void attributeReplaced(HttpSessionBindingEvent arg0) {
		// TODO Auto-generated method stub
		
	}

	}

判断用户是否重复登录方法:

 //是否重复登录的封闭方法  
    public static boolean getRepeat(Long userId) {  
        boolean flag = false;  
        List list = sessionListener.list;  
        for (int i = 0; i < list.size(); i++) {  
            User user = (User) (list.get(i));           
            if (userId.equals(user.getId())) {  
                flag = true;  
            }  
        }  
        return flag;  
    }  


struts2+spring防止用户重复登录(单点登录)

标签:session 防止用户重复登录

原文地址:http://blog.csdn.net/nethackatschool/article/details/45110765

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!