日期:2014-05-20  浏览次数:20767 次

用户重复登录问题
我现在要实现这种功能:
当用户在一台机器上登录以后,就不能在其他机子上再次登录。用户正常退出后,才可以在其他地方登陆。
哪位大虾给分析分析,要怎么才能实现!

------解决方案--------------------
用一个集合保存好登录的用户名,将集合保存到application范围内,
当用户登入时,判断集合中是否有该用户,有就不能登入
用户正常退出时从集合中remove掉该用户名就可以了
------解决方案--------------------
探讨
用一个集合保存好登录的用户名,将集合保存到application范围内,
当用户登入时,判断集合中是否有该用户,有就不能登入
用户正常退出时从集合中remove掉该用户名就可以了

------解决方案--------------------
关于非法退出:

在服务器端设置一个属性,记录每个用户此次登陆的时间,如果登录时间超过一定时间,就从保存用户名的集合中将此用户删除

这是我的想法,不知道可不可行
------解决方案--------------------
SESSION失效处理 

Java code

package com.java91.common.manager;

import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.servlet.http.HttpSession;
import javax.servlet.http.HttpSessionEvent;
import org.apache.log4j.Logger;

import com.java91.common.auto.beans.SessionLog;
import com.java91.common.auto.dao.SessionLogDao;
import com.java91.common.framework.Framework;
import com.java91.common.framework.webutil.WebUtil;


public class SessionListenerImpl implements javax.servlet.http.HttpSessionListener {
    
    Logger log=Framework.getImportLog();     

    public synchronized void sessionCreated(HttpSessionEvent se) {
       
        log.info("----------session监听sessionCreated---sessionid:"+se.getSession().getId()+"---"); 
        //System.out.println("----------session监听sessionCreated---sessionid:"+se.getSession().getId()+"---"); 

    }

    public synchronized void sessionDestroyed(HttpSessionEvent se) {
       
        log.info("----------session监听Destroyed----"+se.getSession().getId()+"--");
        String sessionId = se.getSession().getId();
        UserManager.removeLogonUser(sessionId);
        

      
    }

}