專利名稱::用于登錄用戶的在線離線狀態控制方法
技術領域:
:本發明涉及通信領域,尤其涉及一種用于登錄用戶的在線離線狀態控制方法。
背景技術:
:目前web上B/S架構的應用系統越來越盛行(B/S架構的應用系統是指瀏覽器/WEB服務才莫式的應用系統,即所有的應用程序都部署在WEB月良務端,而客戶端只是簡單的瀏覽器,如IE瀏覽器等,通過瀏覽器客戶端發送請求到WEB服務端完成相應的業務處理),在此類的應用中從安全的角度出發,一般都會設計有用戶登錄控制等的處理流程。在這些WEB應用系統中有時為配合應用系統的需要需控制同一個用戶不能同時在線,即在該用戶沒有退出或注銷或超時前該用戶是不能在另一個瀏覽器窗口再進行登錄進入,因為有些系統如果存在該種情況的話會造成數據的不一致性以及4喿作上的并發沖突等,這就需要對登錄用戶的狀態進行控制才能達到該目的。目前有些系統做到了用戶狀態的控制,一般的做法是在WEB月良務器的內存中記錄用戶的狀態,而不是將用戶狀態記錄在凄t據庫中,這種做法在一個數據庫服務器對應一個WEB服務的情況是足夠了,因為其不需要同其他的WEB服務共享用戶凄t據,^旦在多個WEB服務共享一個數據庫服務器的用戶數據,即用戶狀態共享的情況下處理就會略顯不足,同時對用戶狀態的在線狀態的解除不夠全面。本發明旨在解決用戶的在線離線狀態在盡可能多地情況下的得到控制和一個數據庫服務器對應一個或多個WEB服務的情況下的用戶狀態的共享和控制。
發明內容針對以上一個或多個問題,本發明提供了一種用于登錄用戶的在線離線狀態控制方法,能夠靈活地對用戶狀態進行共享和控制。該方法用于包括一個數據庫月良務器、與其連4^的一個或多個WEB服務器、以及一個或多個瀏覽器的應用系統,一個或多個WEB服務器共享數據庫服務器上的用戶信息,其中,用戶信息包括用戶狀態信息,方法包括與用戶對應的WEB月良務器在需要的情況下^r測通過瀏覽器進行操作的用戶的狀態,并4艮據檢測到的狀態更新數據庫服務器上的用戶狀態信息。在用戶登錄過程中,如果對應WEB服務器檢測到用戶的狀態為在線,則提示用戶已經在線或提示操作員和密碼可能被盜用;如果對應WEB服務器檢測到用戶的狀態為離線,則使用戶正常登錄并將數據庫服務器中的用戶狀態信息修改為在線。在才企測到用戶在預定的超時時間內沒有在應用系統中進4亍4壬何操作的情況下,對應WEB服務器將數據庫月良務器中的用戶狀態信息^修改為離線。在才企測到用戶主動離開應用系統的情況下,對應WEB月良務器將數據庫服務器中的用戶狀態信息修改為離線。在WEB服務器重新啟動的情況下,將最近一次在WEB服務器上登錄的用戶對應的用戶狀態信息在數據庫服務器中修改為離線。在應用系統出現異常或錯誤造成用戶實際離線而凄史據庫服務器中的用戶狀態信息為在線的情況下,對應WEB服務器將凄t據庫月l務器中的用戶狀態信息修改為離線。上述的用戶信息還包括以下至少之一用戶名稱、用戶登錄的WEB月良務器地址、用戶的超時時間。本發明能夠正確控制一個登錄用戶的在線離線狀態,以達到控制相同用戶不能同時登錄在線的目的。此處所說明的附圖用來^是供對本發明的進一步理解,構成本申請的一部分,本發明的示意性實施例及其說明用于解釋本發明,并不構成對本發明的不當限定。在附圖中圖1是應用本發明的系統結構圖;圖2是應用本發明的用戶登錄處理流程圖;圖3是本發明用戶主動退出時用戶的狀態控制流考呈圖;圖4是本發明用戶關閉窗體退出時用戶的狀態控制流程圖;圖5是本發明超時檢測用戶狀態控制流程圖;圖6是本發明人工清理用戶狀態的流程圖;圖7是本發明人工重新設置用戶超時時間的流程圖;以及圖8是本發明WEB月良務器重新啟動后用戶狀態控制流程圖。具體實施方式下面參考附圖,詳細說明本發明的具體實施方式。本發明基于B/S架構應用系統,該系統包括一個數據庫服務器、與其連接的一個或多個WEB服務器、以及一個或多個瀏覽器,一個或多個WEB服務器共享數據庫服務器上的用戶信息,其中,用戶信息包括用戶狀態信息,本發明的方法包括與用戶對應的WEB服務器在需要的情況下檢測通過瀏覽器進行操作的用戶的狀態,并才艮據檢測到的狀態更新數據庫服務器上的用戶狀態信息。在用戶登錄的過程中對應WEB月良務器4企測用戶狀態,如果已經在線則^是示用戶已經在線,或^是示才喿作員和密碼可能一皮盜用,如果檢測到該用戶是離線,則正常進入系統并修改數據庫中該用戶狀態為在線。用戶在應用系統設置的超時時間內沒有對系統進行任何操作,這時需要將該用戶狀態《務改為離線。當用戶主動離開應用系統,如主動注銷或關閉瀏覽器等也需要將該用戶的狀態^^改為離線。當WEB服務重新啟動時,需要將最近一次在在該WEB服務器上登錄的用戶在數據庫中記錄的狀態修改為離線。當應用系統出現不可預知的各種異常或4晉誤,造成用戶的實際為離線而數據庫中記錄該用戶為在線的情況,這時應用系統提供一種清除用戶狀態為離線的機制。應用本發明的方法進行用戶狀態控制的系統結構如圖1所示,包括以下部分一個凄t據庫月l務器、若干個WEB月l務器以及若干個瀏覽器。在圖1的系統結構圖中,多個WEB月良務器共用一個凄t悟庫月艮務器,也就是說所有的用戶信息是集中存放的,為各個WEB服務器所共享,這樣一個用戶的狀態也會在各個WEB服務器中進行流轉共享,WEB力良務器主要是完成業務邏輯的處理等。參考圖2,應用本發明的用戶登錄流程如下步驟S200:用戶登錄處理在用戶登錄頁面輸入用戶名稱和密碼提交給WEB服務器。步驟S210:用戶信息驗證處理,WEB服務器收到提交的用戶名稱和密碼后進^v驗i正,-瞼i正用戶存在與否,密石馬是否正確。步驟S220:判斷驗證是否通過,如果通過則繼續,否則l是示錯誤到登錄頁面。步驟S230:判斷用戶是否已在線,如果在線則在登錄頁面提示在線,登錄失敗。若用戶狀態為離線,則轉入步艱《S240。步驟S240:判斷定時監控線程實例是否已存在,若不存在則轉到步驟S250處理,若已存在轉到步驟S260處理。步艱《S250:創建定時監控線程實例。步驟S260:獲取到創建的定時監控線程實例,并將登錄用戶信息,如用戶名稱、用戶登錄的WEB服務器IP地址、用戶的超時時間等》文置到該線程創建的內存Hashtable表中。步-驟S270:同時將用戶的名稱、用戶id,用戶組id,片又限值等信息放置在本次會話session中,供頁面文件檢測超時使用,并設置超時時間,流禾呈結束。參考圖3,應用本發明的用戶通過注銷動作進4亍退出系統處理流程,具體如下步驟S300:用戶點擊應用系統的注銷按鈕,進行退出系統操作。步驟S310:^是示是否確認退出。步艱《S320:如果確i人退出,則轉入步艱《S330,否則返回。步駛《S330:乂人session會話中獲耳又到用戶一些信息,如用戶名稱、用戶號id、用戶組id等^f言息。步驟S340:判斷定時監控線程實例存在與否,如果存在則繼續步-驟S350,否則返回。步驟S350:從監控線程所管理的內存在線Hashtable中查找該用戶,如果找到則將其,人在線Hashtable中刪除。步驟S360:將數據庫中該用戶的狀態修改為離線,并將session會話i殳置為無效,流程結束。參考圖4,應用本發明的用戶通過關閉窗體進4亍退出系統處理流程如下步驟S400:用戶點擊窗體的關閉鍵進行退出系統。步驟S410:關閉窗體是觸發了窗體的onbeforeunload()和ommload()事件。步驟S420:在onunload()函數中判斷是否是點擊刷新按確丑所觸發,如果是則不是退出系統,返回,如果不是則繼續步驟S430。步驟S430:從session會話中獲取到用戶一些信息,如用戶名稱、用戶號id、用戶組id等信息。步驟S440:判斷定時監控線程實例存在與否,如果存在則繼續步駛《S450,否則返回。步驟S450:從監控線程所管理的內存在線Hashtable中查找該用戶,如果找到則^1奪其乂人在線Hashtable中刪除。步艱《S460:將數據庫中該用戶的狀態^修改為離線,并將session會話設置為無效,流程結束。參考圖5,應用本發明的用戶登錄超時流程控制,具體如下步驟S500:在監控線程體中進入循環,線程1木眠1分鐘。步驟S510:1分鐘后從內存在線Hashtable中如果該表不為空則取出首條用戶記錄。步驟S520:判斷取出的用戶的超時剩余時間是否小于等于0,若是則表明該用戶在失見定的超時時間內沒有才喿作了,則轉入步驟S530,否則轉入步驟S5做步驟S530:該用戶已超時,并將其從在線內存Hashtable中刪除該用戶。步-驟S540:該用戶還沒超時,這時爿夸該用戶的超時剩余時間減少1分鐘。步驟S550:判斷Hashtable中是否還有用戶沒處理完,若還有轉入步駛《S560,否則流程結束。步驟S560:取出該用戶4言息,繼續轉入步驟S520。參考圖6,應用本發明的用戶登錄狀態清理流程控制如下步驟S600:確認設置該用戶狀態為離線嗎,如果是則轉入步駛《S610,否則返回。步驟S610:進行數據庫連接并將該用戶狀態設置為離線,流程結束。參考圖7,應用本發明的重新設置用戶超時時間流禾呈控制如下步驟S700:服務器程序獲取到客戶端用戶請求,說明該用戶在操作。步驟S710:從session中獲取該用戶信息,如用戶名稱等。步驟S720:根據用戶名稱從內存在線Hashtable中查找該用戶。步駛《S730:判斷是否找到,如果找到了則轉入步艱《S740,否則轉入步-銀S750。步驟S740:重新設置Hashtable中該用戶的超時剩余時間為類L定的超時時間。步驟S750:將該用戶放入在線Hashtable中,并i殳置其超時剩余時間為A見定的超時時間,流禾呈結束。參考圖8,本發明WEB服務重新啟動后用戶狀態控制流程如下步驟S800:獲取監控線程實例。步驟S810:判斷該實例是否存在,若存在則表明WEB服務沒有重新啟動,則返回,若不存在則表明有可能是WEB服務重新啟動了,則專爭入步艱《S820(WEB月l務重新啟動則該實例一定是不存在了的)。步驟S820:創建新的監控線程,線程中會創建內存在線用戶的Hashtable表。步驟S830:清理最近一次在該WEB服務器上登錄的用戶在翁:據庫中記錄的用戶狀態為離線狀態,流程結束。以上所述僅為本發明的優選實施例而已,并不用于限制本發明,對于本領域的技術人員來說,本發明可以有各種更改和變化。凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護范圍之內。權利要求1.一種用于登錄用戶的在線離線狀態控制方法,其特征在于,用于包括一個數據庫服務器、與其連接的一個或多個WEB服務器、以及一個或多個瀏覽器的應用系統,所述一個或多個WEB服務器共享所述數據庫服務器上的用戶信息,其中,所述用戶信息包括用戶狀態信息,所述方法包括與用戶對應的WEB服務器在需要的情況下檢測通過所述瀏覽器進行操作的所述用戶的狀態,并根據檢測到的狀態更新所述數據庫服務器上的用戶狀態信息。2.根據權利要求1所述的在線離線狀態控制方法,其特征在于,在所述用戶登錄過程中,如果對應WEB服務器才企測到所述用戶的狀態為在線,則提示用戶已經在線或提示操作員和密碼可能被盜用;如果對應WEB服務器檢測到所述用戶的狀態為離線,則使所述用戶正常登錄并將所述邀:才居庫服務器中的用戶狀態信息修改為在線。3.根據權利要求1所述的在線離線狀態控制方法,其特征在于,在才企測到所述用戶在預定的超時時間內沒有在所述應用系統中進行任何操作的情況下,對應WEB服務器將所述數據庫服務器中的用戶狀態信息修改為離線。4.根據權利要求1所述的在線離線狀態控制方法,其特征在于,在沖企測到所述用戶主動離開所述應用系統的情況下,只于應WEB服務器將所述數據庫服務器中的用戶狀態信息修改為離線。5.根據權利要求1所述的在線離線狀態控制方法,其特征在于,在所述WEB力良務器重新啟動的情況下,將最近一次在所述WEB月l務器上登錄的用戶對應的用戶狀態信息在所述翁:才居庫服務器中修改為離線。6.根據權利要求1所述的在線離線狀態控制方法,其特征在于,在所述應用系統出現異常或4普誤造成用戶實際離線而所述凝:據庫服務器中的用戶狀態信息為在線的情況下,對應WEB月l務器將所述數據庫服務器中的用戶狀態信息修改為離線。7.根據權利要求1至6中任一項所述的在線離線狀態控制方法,其特征在于,所述用戶信息還包括以下至少之一用戶名稱、用戶登錄的WEB服務器地址、用戶的超時時間。全文摘要本發明提供了一種用于登錄用戶的在線離線狀態控制方法,用于包括一個數據庫服務器、與其連接的一個或多個WEB服務器、以及一個或多個瀏覽器的應用系統,一個或多個WEB服務器共享數據庫服務器上的用戶信息,其中,用戶信息包括用戶狀態信息,方法包括以下步驟與用戶對應的WEB服務器檢測用戶的狀態;以及WEB服務器根據檢測到的狀態更新所述數據庫服務器上的用戶狀態信息。文檔編號H04L12/24GK101237351SQ200810082729公開日2008年8月6日申請日期2008年2月27日優先權日2008年2月27日發明者朱元龍,楊冬虎申請人:中興通訊股份有限公司