足彩篮彩哪里买 篮彩神棍区手机版 nba篮彩怎么玩 1月5日篮彩 篮彩大小分攻略 篮彩分析网站 1.79完美篮彩大极品 篮彩预测分析专家推荐 足彩篮彩解盘分析 篮彩竞彩 篮彩分析捷报 网易篮彩 1.79火龙大极品篮彩版 篮彩大小分什么意思 nba篮彩篮球彩票

IT職業教育

華中地區北大青鳥校區IT集訓營

027-87807717

北大青鳥首頁 > 熱門IT技術教程 > .Net技術教程 > > .net實例教程之ASP.NET用戶多次登錄如何實現

.net實例教程之ASP.NET用戶多次登錄如何實現

時間:2012-05-26 09:33 來源:北大青鳥武漢宏鵬魯廣校區作者:027hpedu
導讀:.net實例教程之ASP.NET用戶多次登錄如何實現在北大青鳥武漢宏鵬魯廣校區ACCP6.0課程和學士后.NET課程中有系統的講解。

  .net實例教程之ASP.NET用戶多次登錄如何實現可以讓大家解決web系統開發中要求同一個用戶在同一時間只能登錄一次,也就是如果一個用戶已經登錄了,在退出之前如果再次登錄的話需要報錯的問題。

  了解ASP.NET用戶多次登錄方法能讓大家了解到更多的ASP.NET知識,在web開發中更好的應用。北大青鳥武漢宏鵬魯廣校區給大家分享ASP.NET用戶多次登錄方法:

  常見的處理方法是,在用戶登錄時,判斷此用戶是否已經在Application中存在,如果存在就報錯,不存在的話就加到Application中(Application是所有Session共有的,整個web應用程序有的一個對象):

  string strUserId = txtUser.Text;

  ArrayList list = Application.Get("GLOBAL_USER_LIST") as ArrayList;

  if (list == null)

  {

  list = new ArrayList();

  }

  for (int i = 0; i < list.Count; i++)

  {

  if (strUserId == (list[i] as string))

  {

  //已經登錄了,提示錯誤信息

  lblError.Text = "此用戶已經登錄";

  return;

  }

  }

  list.Add(strUserId);

  Application.Add("GLOBAL_USER_LIST", list);

  當然這里使用Cache等保存也可以。

  接下來就是要在用戶退出的時候將此用戶從Application中去除,我們可以在Global.asax的Session_End事件中處理:

  void Session_End(object sender, EventArgs e)

  {

  // 在會話結束時運行的代碼。

  // 注意: 只有在 Web.config 文件中的 sessionstate 模式設置為

  // InProc 時,才會引發 Session_End 事件。如果會話模式設置為 StateServer

  // 或 SQLServer,則不會引發該事件。

  string strUserId = Session["SESSION_USER"] as string;

  ArrayList list = Application.Get("GLOBAL_USER_LIST") as ArrayList;

  if (strUserId != null && list != null)

  {

  list.Remove(strUserId);

  Application.Add("GLOBAL_USER_LIST", list);

  }

  }

  這些都沒有問題,有問題的就是當用戶直接點瀏覽器右上角的關閉按鈕時就有問題了。因為直接關閉的話,并不會立即觸發Session過期事件,也就是關閉瀏覽器后再來登錄就登不進去了。

  這里有兩種處理方式:

  1、使用Javascript方式

  在每一個頁面中加入一段javascript代碼:

  function window.onbeforeunload()

  {

  if (event.clientX>document.body.clientWidth && event.clientY<0||event.altKey){

  window.open("logout.aspx");

  }

  }

  由于onbeforeunload方法在瀏覽器關閉、刷新、頁面調轉等情況下都會被執行,所以需要判斷是點擊了關閉按鈕或是按下Alt+F4時才執行真正的關閉操作。

  然后在logout.aspx的Page_Load中寫和Session_End相同的方法,同時在logout.aspx中加入事件:onload="javascript:window.close()"

  但是這樣還是有問題,javascript在不同的瀏覽器中可能有不同的行為,還有就是當通過文件->關閉時沒有判斷到。

  2、使用xmlhttp方法(這種方法測試下來沒有問題)

  在每個頁面中加入如下的javascript(這些javascript也可以寫在共通里,每個頁面引入就可以了)

  var x=0;

  function myRefresh()

  {

  var httpRequest = new ActiveXObject("microsoft.xmlhttp");

  httpRequest.open("GET", "test.aspx", false);

  httpRequest.send(null);

  x++;

  if(x<60) //60次,也就是Session真正的過期時間是30分鐘

  {

  setTimeout("myRefresh()",30*1000); //30秒

  }

  }

  myRefresh();

  在web.config中設置

  test.aspx頁面就是一個空頁面,只不過需要在Page_Load中加入:

  Response.Expires = -1;

  保證不使用緩存,每次都能調用到這個頁面。

  原理就是:設置Session的過期時間是一分鐘,然后在每個頁面上定時每30秒連接一次測試頁面,保持Session有效,總共連60次,也就是30分鐘。如果30分鐘后用戶還沒有操作,Session就會過期。當然,如果用戶直接關閉瀏覽器,那么一分鐘后Session也會過期。這樣就可以滿足要求了。

  .net實例教程之ASP.NET用戶多次登錄如何實現在北大青鳥武漢宏鵬魯廣校區ACCP6.0課程和學士后.NET課程中有系統的講解,能夠給大家帶來好的學習機會,讓大家學到更多更實用的信息。

相關文章

告訴我們,你現在想了解什么?

精彩專題——96%的同學看到這里都會點擊下面的專題

  • 關于我們
  • 魯廣校區北大青鳥宏鵬IT學院

    • 北大青鳥(武漢宏鵬)魯廣北校區地址:武漢市洪山區珞喻路724號(二號線光谷廣場站E口出)三樓
      電話:027-87807717
      網址:www.027hpit.com

    • 北大青鳥宏鵬IT學院:武漢市洪山區魯磨路568號
      電話:027-87808818
      網址:www.accp027.com

    • 北大青鳥(武漢宏鵬)魯廣南校區:武漢市洪山區珞喻路724號(二號線光谷廣場站E口出)五樓
      電話:027-87807736
      網址:www.whhpit.com

Copyright (c) 2006-2020 武漢宏鵬教育咨詢有限公司 版權所有 All Rights Reserved.

nba篮彩篮球彩票
足彩篮彩哪里买 篮彩神棍区手机版 nba篮彩怎么玩 1月5日篮彩 篮彩大小分攻略 篮彩分析网站 1.79完美篮彩大极品 篮彩预测分析专家推荐 足彩篮彩解盘分析 篮彩竞彩 篮彩分析捷报 网易篮彩 1.79火龙大极品篮彩版 篮彩大小分什么意思 nba篮彩篮球彩票
图卢兹大学留学要求 广东36选7开奖结果今晚 乐赢金龙棋牌官网 百人推筒子 热那亚vs卡利亚里 海南体彩官方下载ios 江西麻将的算法 古墓奇兵风起云涌 足球狂欢节电子 三分赛车开奖 500彩票网正规网址 上海时时乐带连线走势图 广东麻将规则 亚马逊的秘密走势图 北京pk10开奖结果查询 山东11选5任8杀号技巧