• 限制帐号同时两处以上登录-ASP.NET


    ///登录页面
    Hashtable haol = (Hashtable)Application["olTable"];
                    if (haol == null)
                    {
                        haol = new Hashtable();
                        Application["olTable"] = haol;
                    }
                    else
                    {
    
                        HttpCookie cookie = new HttpCookie("ZInfo");//定义cookie对象以及名为Info的项  
                        if (Request.Cookies["Info"] != null)
                        {
                            Request.Cookies["Info"].Values["UserHotleID"] = SessionInclude.UserBranchId;
                            //cookie.Values.Add("UserHotleID", SessionInclude.UserBranchId);
                            Response.AppendCookie(cookie);//确定写入cookie中 
                        }
                        else
                        {
                            cookie.Values.Add("UserHotleID", SessionInclude.UserBranchId);
                            Response.AppendCookie(cookie);//确定写入cookie中 
                        }
    
                        //当前用户标识
                        Guid key = Guid.NewGuid();
                        Session["userKey"] = key;
                        IDictionaryEnumerator list = haol.GetEnumerator();
                        ArrayList ls = new ArrayList();
                        while (list.MoveNext())
                        {
                            if (list.Value.ToString() == SessionInclude.SessionId.Trim())
                            {
                                ls.Add(list.Key);
                                //haol.Remove(list.Key);
                            }
                        }
                        int i = ls.Count - 1;
                        while (i > -1)
                        {
                            Application.Lock();
                            haol.Remove(ls[i]);
                            Application.UnLock();
                            i = i - 1;
                        }
                        Application.Lock();
                        haol.Add(key, SessionInclude.SessionId.Trim());
                        Application["olTable"] = haol;
                        Application.UnLock();
                    }
    ///所有页面继承类
    public class BasePage : System.Web.UI.Page
    {
     protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);
        }
    
        override protected void OnInit(EventArgs e)
        {
            BasePageInitInfo();
        }
    public void BasePageInitInfo()
        {
            try
            {
                Hashtable haol = (Hashtable)Application["olTable"];
                if (haol == null)
                {
                    haol = new Hashtable();
                    Application["olTable"] = haol;
                }
                else
                {
                    if (Session["userKey"] != null)
                    {
                        //当前用户Key
                        Guid key = new Guid(Session["userKey"].ToString());
                        IDictionaryEnumerator val = haol.GetEnumerator();
                        while (val.MoveNext())
                        {
                            if (val.Value.ToString().Trim() == SessionInclude.SessionId.Trim())
                            {
                                Guid currGuid = new Guid(val.Key.ToString());
                                if (!currGuid.Equals(key))
                                {
                                    Application.Lock();
                                    haol.Remove(Session["userKey"].ToString());
                                    Session["userKey"] = null;
                                    Application.UnLock();
                                    Response.Write("<script>alert('您的帐号在别处登录,您被迫下线');window.parent.location='../Login.aspx';</script>");
                                    break;
                                }
                            }
                        }
                    }
                    else
                    {
                        //当前用户标识
                        Guid key = Guid.NewGuid();
                        Session["userKey"] = key;
                        IDictionaryEnumerator list = haol.GetEnumerator();
                        ArrayList ls = new ArrayList();
                        while (list.MoveNext())
                        {
                            if (list.Value.ToString() == SessionInclude.SessionId.Trim())
                            {
                                ls.Add(list.Key);
                                //haol.Remove(list.Key);
                            }
                        }
                        int i = ls.Count - 1;
                        while (i > -1)
                        {
                            Application.Lock();
                            haol.Remove(ls[i]);
                            Application.UnLock();
                            i = i - 1;
                        }
                        Application.Lock();
                        haol.Add(key, SessionInclude.SessionId.Trim());
                        Application["olTable"] = haol;
                        Application.UnLock();
                    }
                }
            }
            catch
            {
    
            }
    
        }
    }


    文章转自:http://www.cnblogs.com/elves/p/4044947.html
  • 相关阅读:
    [leetCode]剑指 Offer 62. 圆圈中最后剩下的数字
    [leetCode]剑指 Offer 61. 扑克牌中的顺子
    [leetCode]剑指 Offer 60. n个骰子的点数
    POJ
    POJ
    POJ
    codeforces
    LightOJ
    CodeForces
    CodeForces
  • 原文地址:https://www.cnblogs.com/jkyweb/p/4378247.html
Copyright © 2020-2023  润新知