Web信息系統(tǒng)中傳遞消息的方法的詳細流程圖;
[0023]圖3為本發(fā)明實施例中Web服務器的模塊圖。
【具體實施方式】
[0024]為了解決現(xiàn)有技術中在并發(fā)用戶較多時占用內存較大,會造成Web系統(tǒng)擁塞而拒絕訪問的技術問題,本發(fā)明提出了一種Web信息系統(tǒng)中傳遞消息的方法及Web服務器,總體思路如下:
[0025]本發(fā)明所采用的技術方案是依據(jù)可系列化的消息及通行證策略的消息傳遞模型,以唯一憑證號為標示對需要交換或者需要向后續(xù)頁面?zhèn)鬟f的消息存入Web服務器的數(shù)據(jù)庫,需要時直接憑借唯一憑證號從數(shù)據(jù)庫中獲取消息。
[0026]上述技術方案取消了 Web信息系統(tǒng)中sess1n機制,從而不需要每個用戶維持一個sess1n,極大地減少了內存消耗,解決了現(xiàn)有技術方案在并發(fā)用戶較多時占用內存較大,會造成Web系統(tǒng)擁塞而拒絕訪問的技術問題,進而提升了系統(tǒng)的并發(fā)能力,更方便做Web系統(tǒng)集群中的會話保持。
[0027]為使本發(fā)明實施例的目的、技術方案和優(yōu)點更加清楚,下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領域普通技術人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
[0028]本發(fā)明實施例提供的Web信息系統(tǒng)中傳遞消息的方法,應用于Web服務器,Web服務器能夠與Web客戶端進行信息交互。
[0029]參考圖1所示,Web信息系統(tǒng)中傳遞消息的方法包括如下步驟:
[0030]SlOl、對Web客戶端發(fā)送的通行證進行第一驗證。
[0031]具體的,Web客戶端發(fā)送通行證為請求用戶在系統(tǒng)里全部活動的唯一標識,通行證包括Web服務器生成的唯一憑證號,以及當前操作者的IP。
[0032]其中,唯一憑證號為在SlOl之前通過如下流程生成:接收到來自Web客戶端的登陸請求,登陸請求包括請求用戶的用戶名和密碼;判斷用戶名和密碼是否正確,獲得一判斷結果;在判斷結果表明用戶名和密碼均正確時,生成與請求用戶對應的唯一憑證號;保存唯一憑證號對應的憑證到指定位置,以及將唯一憑證號發(fā)送給Web客戶端。在具體實施過程中,唯一憑證號為一個32位的GUID(全局唯一標識符,Globally Unique Identifier) ο在Web客戶端顯示用于請求用戶的登錄界面,用戶從登錄界面輸入用戶名和密碼。Web客戶端將用戶輸入的用戶名和密碼發(fā)送給Web服務器。Web服務器利用用戶登錄時的上下文環(huán)境變量,通過保存憑證函數(shù) “myticket:: = save_vt_sess1n (vt_setss1n vts) ” 生成一個新的憑證“vksetss1n”實例,保存到指定位置;保存成功返回唯一憑證號;保存失敗返回“null”。從用戶登錄系統(tǒng)到退出系統(tǒng)之間,保存憑證的操作只允許一次。
[0033]保存在指定位置的憑證“vt_SeSS1n”是一個以唯一憑證號為標識的可系列化的對象,包括如下內容:vt_setss1n:: = vt_setss1n(ID, //ticket通行證;用戶在系統(tǒng)里全部活動的唯一標識,類似sess1n機制的sess1n id。LOGIN, //登錄名。IP,//登錄ip。NAME,//登錄者標示符號(例如名稱,地址等)。CREATE_TME,//創(chuàng)建時間。ACCESS_TIME,//最近訪問時間。ACCESS_COUNT,//訪問次數(shù)。VALID,//是否有效,如果被系統(tǒng)管理員設置為無效,則本次登錄的認證立即取消了。C_USER_ID,//用戶ID。C_SYSTEM_ID,//用戶所在系統(tǒng)。C_YN_COMMENT,//用戶系統(tǒng)的層次。C_YEAR,//年份,冗余字段,可以直接從CREATEJIME創(chuàng)建時間中獲取ENTITYOBJECT,//最近訪問的對象)。
[0034]在具體實施過程中,對Web客戶端發(fā)送的通行證進行第一驗證,包括如下流程:
[0035]接收Web客戶端發(fā)送的通行證;若從通行證中獲取到唯一憑證號,則檢查指定位置是否保存有與唯一憑證號對應的憑證,若沒有獲取到唯一憑證號,則為第一驗證失敗;其中,檢查結果為是時為第一驗證通過,檢查結果為否時為第一驗證失敗。
[0036]具體來講,在需要憑證的地方,Web客戶端先向Web服務器出示唯一憑證號,從Web服務器的數(shù)據(jù)庫層獲取并返回憑證,Web服務器里沒有與所出示的唯一憑證號一致的憑證時返回“null”。憑證的保存位置為“Const_flag”所指定的指定位置。則檢查所指定的指定位置是否保存有與唯一憑證號對應的憑證的具體通過如下方式:驗證上下文假定不變的參數(shù)與憑證里面對應的參數(shù)是否一致,一致則返回“true”,否則返回“false”。指定位置無此唯一憑證號也返回“false”。所謂上下文假定不變的參數(shù),是指用戶在一個登錄退出過程的期間內,某些環(huán)境參數(shù)可以斷定是相同的,用來防止憑證欺騙。
[0037]進一步,由于通行證中還包含了最開始登錄的IP,在需要提供憑證的地方,Web服務器不僅查看有無攜帶唯一憑證號,以及若通行證中攜帶有唯一憑證號,則檢查指定位置是否保存有與唯一憑證號對應的憑證,還要檢測當前IP是否與所保存在指定位置的憑證里的原始登錄IP是否一致。其中,檢測結果表明當前IP與原始登陸IP —致,且指定位置保存有與唯一憑證號對應的憑證時,表明第一驗證通過,即兩者同時為是時表明第一驗證通過。其中,當前IP與原始登陸IP不一致就表明第一驗證失敗,或者指定位置不存在與唯一憑證號對應的憑證也表明第一驗證失敗。
[0038]S102、若第一驗證通過,將第一消息以通行證中的唯一憑證號為標示,保存到Web服務器的指定位置,其中,第一消息為需要交換或者需要向后續(xù)頁面?zhèn)鬟f的消息。
[0039]具體的,檢驗憑證函數(shù)通過后,通過保存消息鍵值對函數(shù)“boolean:: = put_vt_sess1n_value (vt_sess1n_value) ”將第一消息寫入到鍵值對的對象中,以生成生成需要向后傳遞的消息健值對,并保存到“const_flag”所指定的指定位置,保存成功返回“true”,保存失敗返回“false”。其中,第一消息在消息鍵值對以唯一憑證號為標示。const_flag所指定的指定位置可以為Web服務器的關系數(shù)據(jù)庫或NoSQL數(shù)據(jù)庫(NoSQL數(shù)據(jù)庫泛指非關系型的數(shù)據(jù)庫)中,則保存鍵值對到Web服務器的關系數(shù)據(jù)庫或NoSQL數(shù)據(jù)庫中。具體來講,若第一驗證失敗,則結束請求用戶在Web服務器的所有操作。
[0040]S103、當需要第一消息時,依據(jù)唯一憑證號從指定位置提取第一消息。
[0041]在具體實施過程中,S103包括如下流程:當需要第一消息時,接收來自Web客戶端的通行證;對通行證進行第二驗證,其中,第二驗證與第一驗證為相同的驗證方式;若第二驗證通過,從關系數(shù)據(jù)庫或NoSQL數(shù)據(jù)庫提取消息鍵值對;將鍵值對還原為第一消息。
[0042]具體的,由于第二驗證與第一驗證為相同的驗證方式,在具體實施過程中參考前述對第一驗證的描述,為了說明書的簡潔,本文不再贅述。
[0043]若第二驗證通過(即返回為“true”),通過獲取消息鍵值對函數(shù)“vt_SeSS1n_value:: = get_vt_sess1n_value (String name) ” 從關系數(shù)據(jù)庫或 NoSQL 數(shù)據(jù)庫提取消息鍵值對;將鍵值對還原為第一消息給Web客戶端。獲取消息鍵值對函數(shù)中的參數(shù)“name”是