【C#】ASP.NET網頁中添加單點登入功能

來源:互聯網
上載者:User

標籤:

背景

  首先,要說明的是,原先需求定義的是,同一個帳號只能同時有一個人來登入,如果另外一個登入的話,前一個登陸者就自動被踢掉。本來原先要做成儲存到伺服器的資料庫中,但是後來如果是非正常退出的話 下次就沒法登入,這下就上網找資料 改了以後就有了下面的東東了。

 

登陸頁後台

Login.aspx.cs //單點登入判斷                Hashtable hOnline = (Hashtable)Application["Online"];                if (hOnline != null)                {                    int i = 0;                    while (i < hOnline.Count) //因小BUG所以增加此判斷,強制查詢到底                     {                        IDictionaryEnumerator idE = hOnline.GetEnumerator();                        string strKey = "";                        while (idE.MoveNext())                        {                            if (idE.Value != null && idE.Value.ToString().Equals(userInfo[0].UserId.ToString()))                            {                                //already login                                              strKey = idE.Key.ToString();                                hOnline[strKey] = "XXXXXX";                                break;                            }                        }                        i = i + 1;                    }                }                else                {                    hOnline = new Hashtable();                }                hOnline[Session.SessionID] = userInfo[0].UserId;                Application.Lock();                Application["Online"] = hOnline;                Application.UnLock();
View Code

PS:這段代碼可直接放入登入按鈕裡,在進行了密碼正確與否後直接使用。

 

基礎頁後台(公用頁)

asePage.aspx.cs  //單點登入判斷            Hashtable hOnline = (Hashtable)Application["Online"];            if (hOnline != null)            {                IDictionaryEnumerator idE = hOnline.GetEnumerator();                while (idE.MoveNext())                {                    if (idE.Key != null && idE.Key.ToString().Equals(Session.SessionID))                    {                        //already login                          if (idE.Value != null && "XXXXXX".Equals(idE.Value.ToString()))                        {                            hOnline.Remove(Session.SessionID);                            Application.Lock();                            Application["Online"] = hOnline;                            Application.UnLock();                            string js = "<script language=javascript>alert(‘{0}‘);parent.window.location = ‘{1}‘ </script>";//window.location.replace(‘{1}‘)                            Response.Write(string.Format(js, "帳號已在別處登入 ,你將被強迫下線(請保管好自己的使用者密碼)!", ResolveClientUrl("~/Login.aspx")));                            Session["UserInfo"] = null;                            return;                        }                        break;                    }                }            }
View Code

PS: 這段代碼就是判斷依據。

 

結果示範

 

【C#】ASP.NET網頁中添加單點登入功能

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.