zoukankan      html  css  js  c++  java
  • 限制帐号同时两处以上登录-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
  • 相关阅读:
    Vasya and Endless Credits CodeForces
    Dreamoon and Strings CodeForces
    Online Meeting CodeForces
    数塔取数 基础dp
    1001 数组中和等于K的数对 1090 3个数和为0
    1091 线段的重叠
    51nod 最小周长
    走格子 51nod
    1289 大鱼吃小鱼
    POJ 1979 Red and Black
  • 原文地址:https://www.cnblogs.com/jkyweb/p/4378247.html
Copyright © 2011-2022 走看看