zoukankan      html  css  js  c++  java
  • asp.net 禁止用户二次登录(转)

    问题:
    用户(如Admin)只能在系统中只能一台工作站登录,第二台登录时,自动注销第一台工作站的用户,我现在是用Application和Session来实现的,代码如下:

    登录时:
    if(Application[Session["UserID"].ToString ()]!=null)
    {
    Application[Session["UserID"].ToString ()]=DateTime.Now.ToLongTimeString ();
    Session["LoginTime"]=Application[Session["UserID"].ToString ()].ToString ();

    }
    else
    {
    Application[Session["UserID"].ToString ()]=DateTime.Now.ToShortDateString ();
    Session["LoginTime"]=Application[Session["UserID"].ToString ()].ToString ();
    }
    Response.Redirect ("Bill.aspx");
    页面检查:
    if(Application[Session["UserID"].ToString ()].ToString() !=Session["LoginTime"].ToString ())
    {
    sharecode.OutMsgBox ("用户 "+Session["UserName"].ToString ()+" 在别处登录,您已经自动注销!","logout.aspx");
    }
    现在的问题是,在Session_End事件中,并不能清空Application[Session["UserID"].ToString ()]的值,因为Session在我关闭IE时根本没有触发(郁闷)
    请各位大虾给予帮助,不胜感激!

    给你一个参考,是用来禁止第二次登入的,不是第二次登入踢出第一次的。
    步骤1:在Application_Start事件中,加入下列代码,以建立一个应用程序级的登表:
    DataTable DT=new DataTable();
    DT.Columns.Add("UID",typeof(string));
    DataColumn[] PK=new DataColumn[1];
    PK[0]=DT.Columns["UID"];
    DT.PrimaryKey=PK;
    Application["DT"]=DT;
    步骤2:在用户登录页面中(也可以Session_Start事件中)加入下列代码,判断用户是否在线,如果在线就不允许登录,不在线就将用户ID写入登录表:
    if(((DataTable)Application["DT"]).Rows.Count>0){

    if(((DataTable)Application["DT"]).Rows.Contains(uid.Text.Trim())){
    Page.RegisterStartupScript("","<script>alert('对不起,已登录!');</script>");
    return;
    }



    else{
    Application.Lock();
    DataRow Row=((DataTable)Application["DT"]).NewRow();
    Row["UID"]=(string)Session["uid"];
    ((DataTable)Application["DT"]).Rows.Add(Row);
    Application.UnLock();
    }
    }
    步骤3:在Session_End事件中,注销用户:
    Application.Lock();
    for(int i=0;i<((DataTable)Application["DT"]).Rows.Count;i++){
    DataRow Row=((DataTable)Application["DT"]).Rows[i];
    if(Row["UID"].ToString()==Session["uid"].ToString()){
    Row.Delete();
    }
    }
    Application.UnLock();
  • 相关阅读:
    Nginx无缝升级
    ajax form提交的问题
    Ubuntu下pecl_http的安装
    提高PHP的运行效率的方法
    php.ini中文对照
    类似 TP中 eq 标签
    PHP身份证验证程序
    mysql在php中的应用
    如何添加JavaScript到Joomla模板中去
    USACO / Controlling Companies (类似BFS)
  • 原文地址:https://www.cnblogs.com/weiyuxinghuacun/p/673129.html
Copyright © 2011-2022 走看看