• <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-4-08 14:14 | 作者: 不詳 | 來源: 中國自學編程網 | 查看: 50次 | 進入軟件測試論壇討論

    領測軟件測試網 在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/

    21/212>

    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品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>