就是登陆时该用户已经登陆进去了,有人知道该用户名称和密码在另外的机器能登陆,
请问高手们,该如何解决呢,我想过用在Global.aspx.cs中的Application_Start中触发该事件,但是这个Application_End要在页面全部关闭才触发.

解决方案 »

  1.   

    用QQ那样第一个登陆用户被迫下线的方法.这样比较容易实现并且可以实时性
    服务器application里边为每一个登陆用户登记一个标志位flag,0为1个用户在登录,1为有两个用户登陆上来了,用户在系统上定时检测这个flag值,如果flag为1则第一个用户要下线.
    这里的关键是把别人挤下去,任何人只要用户名和密码正确都随时可以登陆上去,但是会把前面登陆的人挤下去.这样就不会存在有用户非正常退出而出现不能再登陆的问题
      

  2.   

    可以避免楼上的挤下去方法。
    方法比较笨。
    最好建立个access库(小,方便),建立用户表,存入用户登陆信息,加个验证字段,1为已登陆。登陆时查询此表。
      

  3.   

    在用户登录代码中,登录通过后,放在Application中,同时判断是否已有同名用户登录,如果有,Application中该用户登录数目+1,Session中记录此数目(当前登录编号)在用户身份验证代码中,判断用户Session中用户登录编号,如果小于Application中该用户登录数目,则Session变为无效
      

  4.   

    在用户登录代码中,登录通过后,放在Application中,同时判断是否已有同名用户登录,如果有,Application中该用户登录数目+1,Session中记录此数目(当前登录编号)在用户身份验证代码中,判断用户Session中用户登录编号,如果小于Application中该用户登录数目,则Session变为无效
    --------------------------------
    好方法
      

  5.   

    其实很简单个事儿。弄个Hashtable(2.0用Dictionary),用用户名作键。
    一旦有用户登录,就把SessionID写进去。dictionary[username] = Session.SessionID;
    每次需要从Session中取出用户的时候,验证一下,if ( dictionary[(string) Session["username"]].Equals( Session.SessionID ) ) return ... else return null;
    完事。
      

  6.   

    同意一楼的做法,同时也可以用这种方法处理:
    http://dotnet.aspx.cc/ShowDetail.aspx?id=CF5FFABC-CFE1-4368-3C13-9B4FCD7C7168
      

  7.   

    在数据库里加个 IsLoggedIn 字段,
      

  8.   

    http://blog.csdn.net/lengyubing_1983/archive/2006/05/23/751380.aspx