即一個web程序,一個用戶在這部機器上登陸了。那麼該用戶就不能在別的機器上登陸了。怎麼做呢?
用戶登陸的時間是用session("username","aaa")來記錄的。謝謝!

解决方案 »

  1.   

    isLogined(String user){
    Set users = application.getAttribute("users");
    if(users.contains(user)){
      //已经登录
    }else{
      //其它处理
    }
    }
    SessionListener里
    sessionDestroyed(HttpSessionEvent hse){
      HttpSession session = hse.getSession();
      String name = session.getAttribute("username");  
      Set users = session.getServletContext().getAttribute("users");
      users.remove(name);
      session.getServletContext().setAttribute("users",users);
    }
      

  2.   

    to OnlyFor_love(『不给我分 就剪掉楼主小鸡几』) 有道理,好像更人性化一点,那就要用全局媒介记录用户名及对应IP喽,还要等用户下一步操作时候判断,好像要更麻烦一些
      

  3.   

    感謝樓上的二位。我想問一下OnlyFor_love(『不给我分 就剪掉楼主小鸡几』) 那我怎樣做才能夠像QQ一樣被迫下線呢?謝謝你。
      

  4.   

    to:dreamover(梦醒了)SessionListener里
    sessionDestroyed(HttpSessionEvent hse){
      HttpSession session = hse.getSession();
      String name = session.getAttribute("username");  
      Set users = session.getServletContext().getAttribute("users");
      users.remove(name);
      session.getServletContext().setAttribute("users",users);
    }這個在那裡寫的。在servlet的嗎?
      

  5.   

    登录的时候监听一下,写自己的类实现了了ServletContextListener,HttpSessionAttributeListener,再写一个内部类,实现FileFilter进行你要的处理
      

  6.   

    不是servlet是自己写这么一个类public class SessionListener implements javax.servlet.http.HttpSessionListener{
      public void sessionCreated(HttpSessionEvent hse){
      }
      public void sessionDestroyed(HttpSessionEvent hse){
      }}
    然后在web.xml里添加
    <listener>
    <listener-class>包名.SessionListener</listener-class>
    </listener>
    就可以了
      

  7.   

    这种做法没有什么意义,最好的办法并不是不让用户在其他地方登陆,而是设定一个session的范围,如果一定时间内停止活动,那么session失效。判断IP、端口是没有意义的。你可以研究一下某些论坛的一个功能:在线用户名单你看到的并不一定真正在线的用户列表,可能几分钟前已经关闭浏览器,但是仍然在session的有效时间短内。
      

  8.   

    数据库中多两个字段在线状态标志(用来记录是否登录)
    最后活动时间(用来记录用户最后活动时间)比如online=1说明此用户已经在线,那么判断用户活动时间与系统日期间隔是否大于3分钟,如果小于那么认为用户仍然处于活动状态中,禁止登录。否则相反。用户每次活动更新最后活动时间为系统当前时间。至于间隔多少分钟,自己说的算。
    ===========================================
    上面的方法可以保证用户登录一次后不可以继续登录,如果想使用QQ的方法可以使用随机密码就是说在数据库中多一个字段,用来存放随机密码。登录的时候生成这个随机密码,并且存放在客户端。客户端每次提交数据针对这个随机密码进行更新。在提交的同时先校验客户端随机密码与服务器端随机密码一致,一致则通过,否则告知用户。如果有人又一次使用这个账号登录,随机密码更新。前者自然就无法提交数据。