当一个用户在一点上登陆以后,第二个用户使用相同的用户信息登陆,以前的用户不能再操作(相当于注销),这样的操作可以实现吗?  我用session和application 考虑了很久,没有想出来,特来请教!

解决方案 »

  1.   

    例如一个用户名为:test
    登陆成功后设:
    Application("User_" + test) = Request.UserHostAddress;
    然后在每个页面检查这个值是否对应,如不能对应使其登陆失效
      

  2.   

    用SESSION不能实现。
    用application也很难实现。
      

  3.   

    string test = "username";
    Application["User_" + test] = Request.UserHostAddress;if(Application["User_" + test] != Request.UserHostAddress)
          Session["login"] = null;
      

  4.   

    to: moodboy1982(好好学习,天天向上) 有没有能具体实现的办法
      

  5.   

    to: hzw66(超越理想) 你把session清了,你自己就不能登陆了啊!
    我也是这样的,开始还以为很简单,不是别人清除你的session,是自己清除啊!好象有矛盾,可能用其他方法解决吧!
      

  6.   

    没发现我的方法有什么行不通?
    string test = "username";
    private void Page_Load(object sender, System.EventArgs e)
    {
    if(Application["User_" + test] == null || Application["User_" + test].ToString() != Request.UserHostAddress)
    Session["login"] = null;
    else
    Response.Write(Session["login"].ToString() + "已登录<br>");
    }
    private void Button1_Click(object sender, System.EventArgs e)
    {
    Session["login"] = test;
    Application["User_" + test] = Request.UserHostAddress;
    }
      

  7.   

    to: hzw66(超越理想) 好象行啊!我试试啊!谢谢!
      

  8.   

    判斷一下當前User是否已在Session中存在來實現
      

  9.   

    把当前登陆的所有用户存储起来(可以放哈希表中、静态datatable、数据表、单独的xml中,随你选一种)登陆的时候把用户存入(可以用登陆的当前时间为第一标识),注销时再删除下面是实现你说的功能的做法在登陆时先检索一下在线用户中有没有,没有则正常登陆,有则把原来的删除,再把目前的加进去,当然验证的时候也得是判断当前用户是否存在于在线列表中
      

  10.   

    当然要建一张用户在线表,来判定.T_SysUserOnLine
      

  11.   

    to:cncxz(虫虫) 
    怎么让原来的用户不能操作,而现在的用户可以操作呢?
      

  12.   

    1.在用户登录的时候,把当前用户号及他的sessionid登记在表里,标志为活动
    2.当另外一个人以相同的号登录的时候,搜索当前有无相同用户号在活动,如果没有,则建立自己的号,如果有,则将该号标志为不可用,同时创建自己的记录。
    3.在用户需要进行操作或权限判断的时候,每次均到表中查询属于自己的登录记录是否已经被置为不可用,如果是,则不允许操作,并且清空他的SESSION信息。
      

  13.   

    当然,你可以把表创建在cache里面,并且在用户的session_end事件 里面,清除该用户的cache里面的记录