• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • Asp.net中防止用戶多次登錄的方法

    發表于:2008-04-08來源:作者:點擊數: 標簽:
    在Web 開發 時,有的系統要求同一個用戶在同一時間只能登錄一次,也就是如果一個用戶已經登錄了,在退出之前如果再次登錄的話需要報錯。 常見的處理方法是,在用戶登錄時,判斷此用戶是否已經在Application中存在,如果存在就報錯,不存在的話就加到Applicati
    在Web開發時,有的系統要求同一個用戶在同一時間只能登錄一次,也就是如果一個用戶已經登錄了,在退出之前如果再次登錄的話需要報錯。

        常見的處理方法是,在用戶登錄時,判斷此用戶是否已經在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代碼:

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>