asp.net防止用户同时登陆问题 就是一个账号登陆系统后。这个账号不能在其它计算机上进行登陆。我自己的思路有问题:当一个账号登陆时给把它的状态设置1,点击退出时状态清0 这样通过状态就能实现这一功能但是如果用户不是点击退出按钮退出和断电、关闭浏览器退出.....等意外情况退出时那么系统就不能修改它的状态了下次登陆时系统就会提示该账号已登陆就不能进行登陆了大家给给思路~~这个应该怎么做~~

解决方案 »

  1.   

    asp.net 你怎么知道他退出了?
      

  2.   

    找单点登录的资料看吧。
    一般都是保存Session,定时判断Session是否为空。
      

  3.   

    设置登录过期时间吧,看他多久没操作(比如浏览 提交一次就刷新上一次操作时间),保持在application 里面 然后定时扫描.........我也很菜的...
      

  4.   

    单点登录,
    设置用户状态,AJAX轮询判断用户操作时间和状态
      

  5.   


    登陆时我可以在Application中存在此用户ArrayList list = Application.Get("GLOBAL_USER_LIST") as ArrayList; 
    for (int i = 0; i < list.Count; i++) 
      { 
      if (UserId == (list[i] as string)) 
      { 
      //已经登录了,提示错误信息 
      Error.Text = "此用户已经登录"; 
      return; 
      } 
      } 但是退出时就不好怎么做了
    有问题的就是当用户直接点浏览器右上角的关闭按钮时、按下Alt+F4时就不能正确判断用户已退出
      

  6.   

    Button被点击后disable掉该页面中所有的Button,从而防止提交延时导致的多次提交。基于之前的onceclickbutton脚本.//ASP.NET中防止页面多次提交的代码:javascript< script language="javascript"> < !-- function disableOtherSubmit() { 
    var obj = event.srcElement; 
    var objs = document.getElementsByTagName('INPUT'); 
    for(var i=0; i< objs.length; i++) 

    if(objs[i].type.toLowerCase() == 'submit') 

    objs[i].disabled = true; 


    } //--> < /script>//ASP.NET中防止页面多次提交的代码:asp.netpublic class PreventMultiClick : System.Web.UI.Page { 
    protected System.Web.UI.WebControls.Button Button1; protected System.Web.UI.WebControls.Button Button2; 
    protected System.Web.UI.WebControls.LinkButton LinkButton1; protected System.Web.UI.WebControls.Button Button3; private void Page_Load(object sender, System.EventArgs e) 

    this.GetPostBackEventReference(this.Button3); 
    //保证 __doPostBack(eventTarget, eventArgument) 正确注册 if(!IsPostBack) 

    System.Text.StringBuilder sb = new System.Text.StringBuilder(); 
    sb.Append("if (typeof(Page_ClientValidate) == 'function') 

    if (Page_ClientValidate() == false)
    {
    return false; 
    }
    }"); //保证验证函数的执行 sb.Append("if(window.confirm('are you sure?')==false) return false; "); 
    //自定义客户端脚本 sb.Append("disableOtherSubmit(); "); 
    // disable所有submit按钮 sb.Append(this.GetPostBackEventReference(this.Button3)); 
    //用__doPostBack来提交,保证按钮的服务器端click事件执行 sb.Append("; "); 
    Button3.Attributes.Add("onclick",sb.ToString()); 

    } #region Web Form Designer generated code override protected void OnInit(EventArgs e) 

    // // CODEGEN: This call is required by the ASP.NET Web Form Designer. // InitializeComponent(); 
    base.OnInit(e); 

    /// < summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// < /summary> private void InitializeComponent() 

    this.Button3.Click += new System.EventHandler(this.Button3_Click); this.Load += new System.EventHandler(this.Page_Load); 

    #endregion private void Button3_Click(object sender, System.EventArgs e) 

    System.Threading.Thread.Sleep(3000); 
    Response.Write("Hello world!"); 

    } 此处只是disable掉所有的submit button, 我觉得其它的可提交控件也是可以通过类似的方法来disable的.以上就是ASP.NET中防止页面多次提交的代码实现
      

  7.   

    在数据库中用一个字段保存一个sessionid值,每次有人登录成功时就更新这个值,这样可让前一个同用户名的断掉吧,如果要实时的,得定时刷新状态
      

  8.   

    这个问题好简单哦 多平台单点登录 用webservice
      

  9.   

    Application这个不是很准确
    只能这个登录就另外一个下线,和QQ一样
      

  10.   

    貌似说的是单点登陆http://hi.baidu.com/zxs820329/blog/item/2b27d458f4a9044efbf2c0d4.html
      

  11.   

    感觉应该是用Session的吧,如果用户退出是像关闭浏览器这种,关闭浏览器session就会清空了撒,定时根据session中是否有值来操作数据库某个用户的状态吧。
      

  12.   

    百度、Google:Asp.Net单点登录
      

  13.   

    session——start;里面跟session_end里面写代码。
      

  14.   

       建议不要使用ajax,因为那样在多用户的时候会带来服务器负担!QQ的登录机制就很好啊!