本發(fā)明實施例涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,尤其涉及一種防止用戶重復(fù)登錄的方法和服務(wù)器。
背景技術(shù):
Web集群是由多個同時運行同一個web應(yīng)用的服務(wù)器組成,在外界看來就像一個服務(wù)器一樣,多個服務(wù)器共同來為客戶提供更高性能的服務(wù)。由于WEB集群環(huán)境中有多個服務(wù)器組成,從而會出現(xiàn)同一用戶在多個服務(wù)器上登錄并操作的情況,進而帶來系統(tǒng)性能問題和安全問題。系統(tǒng)性能問題主要是多個相同的用戶同時操作會對系統(tǒng)造成壓力;安全問題指用戶賬號安全性的問題,允許一個賬戶重復(fù)登錄,就會有多人在不同服務(wù)器上同時操作同一個賬戶的可能性,就有可能造成操作沖突、操作結(jié)果不符合預(yù)期等?,F(xiàn)有技術(shù)中解決用戶在服務(wù)器上重復(fù)登錄的方法主要是利用數(shù)據(jù)庫標(biāo)記用戶登錄狀態(tài);但這種方式由于需要頻繁地與數(shù)據(jù)庫交互,容易引起性能問題,因為數(shù)據(jù)庫建立連接是消耗時間和資源的;同時這種方式也需要考慮用戶非正常退出的情況,如果用戶直接關(guān)閉瀏覽器或者是計算機,那么數(shù)據(jù)庫中的字段永遠是已登錄標(biāo)記,那么下次用戶登錄時,用戶會登錄不進去,其實真實的情況是并沒有用戶處于登錄狀態(tài);因此,現(xiàn)有技術(shù)中利用數(shù)據(jù)庫標(biāo)記用戶登錄狀態(tài)的方法并沒有很好解決同一用戶在多個服務(wù)器上重復(fù)登錄并操作的問題。
技術(shù)實現(xiàn)要素:
本發(fā)明實施例提供一種防止用戶重復(fù)登錄的方法和服務(wù)器,用以解決現(xiàn)有技術(shù)中出現(xiàn)同一用戶在多個服務(wù)器上重復(fù)登錄并操作的問題。
本發(fā)明實施例提供一種防止用戶重復(fù)登錄的方法,應(yīng)用于集群WEB環(huán)境中,包括:
第一服務(wù)器接收用戶的操作請求,第一服務(wù)器為所述集群WEB環(huán)境中用戶登錄成功的任意一個服務(wù)器;
第一服務(wù)器判斷是否具有用戶的權(quán)限信息,若具有用戶的權(quán)限信息,則從存儲區(qū)獲取用戶的第一會話信息,第一會話信息為存儲區(qū)中存儲的用戶最后一次成功登錄的會話信息;
第一服務(wù)器判斷第一會話信息與用戶當(dāng)前操作的第二會話信息是否相同;
若第一會話信息與第二會話信息不相同,則不執(zhí)行用戶的操作請求。
可選的,還包括:
若第一服務(wù)器不具有用戶的權(quán)限信息,則注銷用戶在第一服務(wù)器上的登錄信息。
可選的,還包括:
若第一會話信息與第二會話信息相同,則執(zhí)行用戶的操作請求。
可選的,若所述第一會話信息與所述第二會話信息不相同,還包括:
從所述第一服務(wù)器上刪除所述用戶的權(quán)限信息并注銷所述用戶在所述第一服務(wù)器上的登錄信息。
可選的,第一服務(wù)器接收用戶的操作請求之前,還包括:
第一服務(wù)器獲取用戶的登錄請求并建立用戶的第二會話信息;
第一服務(wù)器查詢存儲區(qū)中是否存有用戶的會話信息;
若存儲區(qū)中存有用戶的會話信息,則判斷第二會話信息與存儲區(qū)中保存的用戶的會話信息是否相同;
若不相同,則將第二會話信息作為用戶在存儲區(qū)中的會話信息。
可選的,還包括:
若存儲區(qū)中未存有用戶的會話信息,則將用戶的第二會話信息保存至存儲區(qū)。
可選的,還包括:
更新用戶在存儲區(qū)中的會話信息的生效時間;
若用戶在存儲區(qū)中的會話信息的生效時間在設(shè)定時間段內(nèi)沒有更新,則刪除用戶在存儲區(qū)中的會話信息。
本發(fā)明實施例提供一種防止用戶重復(fù)登錄的服務(wù)器,服務(wù)器為集群WEB環(huán)境中用戶登錄成功的任意一個服務(wù)器,包括:
接收模塊,用于接收用戶的操作請求;
第一判斷模塊,用于判斷所述服務(wù)器是否具有用戶的權(quán)限信息,若具有用戶的權(quán)限信息,則從存儲區(qū)獲取用戶的第一會話信息,第一會話信息為存儲區(qū)中存儲的用戶最后一次成功登錄的會話信息;
第二判斷模塊,用于判斷第一會話信息與用戶當(dāng)前操作的第二會話信息是否相同;若第一會話信息與第二會話信息不相同,則不執(zhí)行所述用戶的操作請求。
可選的,第一判斷模塊具體用于:
若服務(wù)器不具有用戶的權(quán)限信息,則注銷用戶在服務(wù)器上的登錄信息。
可選的,第二判斷模塊還用于:
若第一會話信息與第二會話信息相同,則執(zhí)行用戶的操作請求。
可選的,還包括:
處理模塊,用于若第一會話信息與第二會話信息不相同,則從服務(wù)器上刪除用戶的權(quán)限信息并注銷用戶在服務(wù)器上的登錄信息。
可選的,還包括:
登錄模塊,用于獲取用戶的登錄請求并建立用戶的第二會話信息;
查詢存儲區(qū)中是否存有用戶的會話信息;
若存儲區(qū)中存有用戶的會話信息,則判斷第二會話信息與存儲區(qū)中保存的用戶的會話信息是否相同;
若不相同,則將第二會話信息作為用戶在存儲區(qū)中的會話信息。
可選的,登錄模塊還用于:
若存儲區(qū)中未存有用戶的會話信息,則將用戶的第二會話信息保存至存儲區(qū)。
可選的,登錄模塊還用于:
更新用戶在存儲區(qū)中的會話信息的生效時間;
若用戶在存儲區(qū)中的會話信息的生效時間在設(shè)定時間段內(nèi)沒有更新,則刪除用戶在存儲區(qū)中的會話信息。
從上述內(nèi)容可看出:本發(fā)明實施例提供一種防止用戶重復(fù)登錄的方法和服務(wù)器,應(yīng)用于集群WEB環(huán)境中,第一服務(wù)器接收用戶的操作請求,第一服務(wù)器為集群WEB環(huán)境中用戶登錄成功的任意一個服務(wù)器;第一服務(wù)器判斷是否具有用戶的權(quán)限信息,若具有用戶的權(quán)限信息,則從存儲區(qū)獲取用戶的第一會話信息,第一會話信息為存儲區(qū)中存儲的用戶最后一次成功登錄的會話信息;第一服務(wù)器判斷第一會話信息與用戶當(dāng)前操作的第二會話信息是否相同;若第一會話信息與第二會話信息不相同,則不執(zhí)行用戶的操作請求。
由于用戶每次登錄集群WEB環(huán)境中后,根據(jù)負載均衡用戶可能分配到不同的服務(wù)器上,故用戶可能在不同的服務(wù)器上成功登錄;用戶一旦在服務(wù)器上登錄成功,登錄成功的服務(wù)器都會接收用戶操作請求,接收到用戶操作請求的服務(wù)器首先判斷自身是否包括用戶的權(quán)限信息,若服務(wù)器包含用戶的權(quán)限信息,則獲取存儲區(qū)中用戶的會話信息;由于存儲區(qū)中對于同一個用戶只存儲該用戶最后一次登錄成功的會話信息,故通過比較用戶當(dāng)前操作的會話信息和存儲區(qū)中用戶的會話信息可以判斷此時用戶是否在最后一次登錄成功的服務(wù)器上操作,若用戶當(dāng)前操作的會話信息和存儲區(qū)中用戶的會話信息不相同,說明此時用戶在其它服務(wù)器上登錄了,并且當(dāng)前不是在最后一次登錄成功的服務(wù)器上操作,故用戶當(dāng)前操作不能執(zhí)行,從而使得用戶只能在最后一次登錄成功的服務(wù)器上執(zhí)行操作,避免了用戶同時在多個服務(wù)器上登錄并操作造成的系統(tǒng)性能問題以及用戶賬號安全問題。
附圖說明
為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例描述中所需要使用的附圖作簡要介紹。
圖1為本發(fā)明實施例提供了一種系統(tǒng)架構(gòu)示意圖;
圖2為本發(fā)明實施例提供的一種防止用戶重復(fù)登錄的方法流程示意圖;
圖3為本發(fā)明實施例提供的一種用戶登錄的方法流程示意圖;
圖4為本發(fā)明實施例提供的一種防止用戶重復(fù)登錄的服務(wù)器的結(jié)構(gòu)示意圖。
具體實施方式
為了使本發(fā)明的目的、技術(shù)方案及有益效果更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進行進一步詳細說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
圖1示例性示出了本發(fā)明實施例適用的一種系統(tǒng)架構(gòu)示意圖,如圖1所示,本發(fā)明實施例適用的系統(tǒng)架構(gòu)包括終端101、服務(wù)器102、服務(wù)器103、服務(wù)器104、數(shù)據(jù)庫105,通過無線連接或有線連接或其他方式連接。
終端可以指用戶設(shè)備(User Equipment,簡稱UE)、接入終端、用戶單元、用戶站、移動站、移動臺、遠方站、遠程終端、移動設(shè)備、用戶終端、終端、無線通信設(shè)備、用戶代理或用戶裝置。接入終端可以是蜂窩電話、無繩電話、會話啟動協(xié)議(Session Initiation Protocol,簡稱SIP)電話、無線本地環(huán)路(Wireless Local Loop,簡稱WLL)站、個人數(shù)字處理(Personal Digital Assistant,簡稱PDA)、具有無線通信功能的手持設(shè)備、計算設(shè)備或連接到無線調(diào)制解調(diào)器的其它處理設(shè)備、車載設(shè)備、可穿戴設(shè)備,未來5G網(wǎng)絡(luò)中的終端設(shè)備等。
服務(wù)器102、服務(wù)器103和服務(wù)器104可以是用于與終端進行通信的設(shè)備,例如,可以是具有信息處理功能的計算機設(shè)備,如Web集群中運行同一個web應(yīng)用的服務(wù)器。Redis集群可以用來存儲WEB集群中各服務(wù)器上用戶登錄的會話信息,對于一個用戶,Redis集群只保存用戶在WEB集群中一個服務(wù)器上的會話信息;Redis集群是一個實現(xiàn)分布式并且允許單點故障的Redis高級版本,Redis集群沒有最重要或者說中心節(jié)點,這個版本最主要的一個目標(biāo)是設(shè)計一個線性可伸縮的功能,Redis集群為了數(shù)據(jù)的一致性可能犧牲部分允許單點故障的功能,所以當(dāng)網(wǎng)絡(luò)故障和節(jié)點發(fā)生故障時這個系統(tǒng)會盡力去保證數(shù)據(jù)的一致性和有效性。
圖2示例性示出了本發(fā)明實施例提供的一種防止用戶重復(fù)登錄的方法流程示意圖。
步驟S201,第一服務(wù)器接收用戶的操作請求,第一服務(wù)器為集群WEB環(huán)境中用戶登錄成功的任意一個服務(wù)器;
步驟S202,第一服務(wù)器判斷是否具有用戶的權(quán)限信息,若具有用戶的權(quán)限信息,則從存儲區(qū)獲取用戶的第一會話信息,第一會話信息為存儲區(qū)中存儲的用戶最后一次成功登錄的會話信息;
步驟S203,第一服務(wù)器判斷第一會話信息與用戶當(dāng)前操作的第二會話信息是否相同;
步驟S204,若第一會話信息與第二會話信息不相同,則不執(zhí)行用戶的操作請求。
具體實施中,集群WEB環(huán)境由多個同時運行同一個WEB應(yīng)用的服務(wù)器組成,在外界看來就像一個服務(wù)器一樣,這多臺服務(wù)器共同來為客戶提供更高性能的服務(wù)。集群更標(biāo)準(zhǔn)的定義是:一組相互獨立的服務(wù)器在網(wǎng)絡(luò)中表現(xiàn)為單一的系統(tǒng),并以單一系統(tǒng)的模式加以管理,此單一系統(tǒng)為客戶工作站提供高可靠性的服務(wù)。用戶登錄集群WEB環(huán)境中后,域名系統(tǒng)(Domain Name System,簡稱DNS)根據(jù)負載均衡實現(xiàn)合理的任務(wù)分配,使這些服務(wù)器不會出現(xiàn)因某一臺超負荷、而其他的服務(wù)器卻沒有充分發(fā)揮處理能力的情況。負載均衡有兩個方面的含義:首先,把大量的并發(fā)訪問或數(shù)據(jù)流量分擔(dān)到多臺節(jié)點上分別處理,減少用戶等待響應(yīng)的時間;其次,單個高負載的運算分擔(dān)到多臺節(jié)點上做并行處理,每個節(jié)點設(shè)備處理結(jié)束后,將結(jié)果匯總,再返回給用戶,使得信息系統(tǒng)處理能力可以得到大幅度提高。權(quán)限信息具體包括系統(tǒng)展示給用戶的菜單和這些菜單包含的各種操作資源;用戶成功登錄一個服務(wù)器之后,該服務(wù)器中將存有用戶的權(quán)限信息;當(dāng)用戶注銷登錄、關(guān)閉瀏覽器或計算機時,服務(wù)器中的用戶權(quán)限信息將自動清除。
為了更清楚的介紹上述方法流程,本發(fā)明實施例提供以下示例。
由于集群WEB環(huán)境中包含多個服務(wù)器,從而同一用戶可能在同一時間在不同的服務(wù)器上同時登錄,比如,用戶1進入登錄界面,輸入賬號和密碼后提交,DNS根據(jù)負載均衡將用戶1分配在服務(wù)器A上,則用戶1在服務(wù)器A上成功登錄;用戶1在沒有注銷服務(wù)器A上登錄的情況下,再次進入登錄界面登錄時,DNS根據(jù)負載均衡可能將用戶1分配在服務(wù)器B上,故用戶1在服務(wù)器B上也登錄成功,此時集群WEB環(huán)境中用戶登錄成功的服務(wù)器包括服務(wù)器A和服務(wù)器B;服務(wù)器A和服務(wù)器B均能收到用戶1的操作請求;服務(wù)器A和服務(wù)器B均接收到用戶1的操作請求之后,服務(wù)器A判斷自身是否具有用戶1的權(quán)限信息,服務(wù)器B中的判斷自身是否具有用戶1的權(quán)限信息,由于用戶1在服務(wù)器A和服務(wù)器B上都登錄成功,則服務(wù)器A和服務(wù)器B都具有用戶1的權(quán)限信息,故服務(wù)器A和服務(wù)器B都從存儲區(qū)獲取用戶1的會話信息;由于用戶1最后是在服務(wù)器B上登錄成功,所示存儲區(qū)中保存的是用戶成功登錄服務(wù)器B的會話信息;當(dāng)服務(wù)器A將獲取的存儲區(qū)中用戶1的會話信息和用戶1當(dāng)前操作的會話信息進行比較,得到用戶1當(dāng)前操作的會話信息與存儲區(qū)中用戶1的會話信息不相同,說明用戶1在其它地方登錄了,所以不執(zhí)行用戶1的操作請求。若第一會話信息與第二會話信息相同,則執(zhí)行用戶的操作請求,服務(wù)器B將獲取的存儲區(qū)中用戶1的會話信息和用戶1當(dāng)前操作的會話信息進行比較,得出用戶1當(dāng)前操作的會話信息與存儲區(qū)中用戶1的會話信息相同,說明用戶1最后在服務(wù)器B上登錄成功,所以執(zhí)行用戶1的操作請求。由此用戶雖然在不同的服務(wù)器上同時登錄,但是用戶只能在一個服務(wù)器上進行操作,一方面避免了多個相同用戶同時操作對系統(tǒng)造成壓力,另一方面也避免了多人同時操作同一賬戶帶來的操作沖突。
可選的,若所述第一會話信息與所述第二會話信息不相同,還包括:從第一服務(wù)器上刪除用戶的權(quán)限信息并注銷用戶在第一服務(wù)器上的登錄信息。
具體實施中,服務(wù)器A確定用戶1當(dāng)前操作的會話信息與存儲區(qū)中用戶1的會話信息不相同之后,服務(wù)器A會將服務(wù)器A中所包含的用戶1的權(quán)限信息刪除并注銷用戶1在服務(wù)器A上的登錄;具體實施中,還可以是服務(wù)器A只將用戶1在服務(wù)器A上的權(quán)限信息刪除,并不注銷用戶1在服務(wù)器A上的登錄??蛇x的,還包括:若第一服務(wù)器不具有用戶的權(quán)限信息,則注銷用戶在第一服務(wù)器上的登錄信息。具體實施中,當(dāng)用戶1再次向服務(wù)器A發(fā)送操作請求時,服務(wù)器A判斷是否具有用戶1的權(quán)限信息,此時服務(wù)器A不具有用戶1的權(quán)限信息,之后再注銷用戶1在服務(wù)器A上的登錄;由此防止了同一用戶在不同的服務(wù)器上同時登錄并操作。
上述實施例為用戶已成功登錄多個服務(wù)器之后,針對該用戶的操作請求的處理,在上述實施例中一方面避免了多個服務(wù)器對用戶的同一個操作請求的處理;另一方面,也實現(xiàn)了在執(zhí)行操作請求的過程中,注銷用戶在其他服務(wù)器上的登錄信息,進一步減輕了其他服務(wù)器在后續(xù)對該用戶的操作請求的處理,減少了網(wǎng)絡(luò)通訊資源的冗余占用。
為進一步介紹存儲區(qū)中保存的是用戶最后一次成功登錄的會話信息,以如下實施例介紹用戶進行登錄請求的具體實現(xiàn)過程,圖3示例性示出了本發(fā)明實施例提供的一種用戶登錄的方法流程示意圖。
步驟S301,第一服務(wù)器獲取用戶的登錄請求
步驟S302,第一服務(wù)器建立用戶的第二會話信息;
步驟S303,第一服務(wù)器查詢存儲區(qū)中用戶的會話信息;
步驟S304,判斷存儲區(qū)中是否存有用戶的會話信息,若是,則執(zhí)行步驟S305否則執(zhí)行步驟S306;
步驟S305,判斷第二會話信息與存儲區(qū)中保存的用戶的會話信息是否相同,若是,則執(zhí)行步驟S307,否則執(zhí)行步驟S308;
步驟S306,將用戶的第二會話信息保存至存儲區(qū);
步驟S307,存儲區(qū)繼續(xù)保存用戶的會話信息;
步驟S308,將第二會話信息作為用戶在存儲區(qū)中的會話信息。
具體實施中,服務(wù)器在獲取用戶的登錄請求后,服務(wù)器將建立用戶的會話和每個會話對應(yīng)的會話信息,會話信息可以是sessionid,一個用戶成功登錄一個服務(wù)器后對應(yīng)特定的會話信息,不同的用戶在不同的服務(wù)器上登陸后得到的會話信息都是不一樣的;存儲區(qū)可以是Redis集群或其他形式的存儲裝置;
本發(fā)明實施例提供一種服務(wù)器將用戶的會話信息保存至存儲區(qū)的示例,比如,設(shè)定WEB集群中有服務(wù)器A和服務(wù)器B,用戶1發(fā)送登錄請求,分為以下幾種情況:
情況一、用戶1進入登錄界面輸入賬號密碼,若DNS根據(jù)負載均衡將用戶1分配在服務(wù)器A或服務(wù)器B時,則用戶1在服務(wù)器A或服務(wù)器B上登錄成功,服務(wù)器A或服務(wù)器B查詢存儲區(qū)中用戶1的會話信息后,得到存儲區(qū)中不包含用戶1的會話信息,則存儲區(qū)將用戶1在服務(wù)器A或服務(wù)器B上的會話信息保存至存儲區(qū)。
情況二、當(dāng)用戶1正在服務(wù)器A上登錄,此時存儲區(qū)中保存的是用戶1在服務(wù)器A上的會話信息,用戶1再次進入登錄界面輸入賬號密碼,若DNS根據(jù)負載均衡將用戶1分配在服務(wù)器B時,則用戶1在服務(wù)器A和服務(wù)器B上同時登錄成功,服務(wù)器B查詢存儲區(qū)中用戶1的會話信息后,得到存儲區(qū)中用戶1的會話信息與用戶1在服務(wù)器B上的會話信息不一致,則存儲區(qū)先刪除已保存的用戶1在服務(wù)器A上的會話信息,再保存用戶1在服務(wù)器B上的會話信息;
情況三、當(dāng)用戶1正在服務(wù)器A上登錄,此時存儲區(qū)中保存的是用戶1在服務(wù)器A上的會話信息,用戶1再次進入登錄界面輸入賬號密碼,若DNS根據(jù)負載均衡將用戶1分配在服務(wù)器A時,則用戶1仍舊在服務(wù)器A上登錄,服務(wù)器A查詢存儲區(qū)中用戶1的會話信息后,得到存儲區(qū)中用戶1的會話信息與用戶1在服務(wù)器A上的會話信息一致,則存儲區(qū)繼續(xù)保存用戶1在服務(wù)器A上的會話信息;
情況四、當(dāng)用戶1在服務(wù)器A上成功登錄后關(guān)閉瀏覽器或者計算機,此時存儲區(qū)中保存的是用戶1在服務(wù)器A上的會話信息,用戶1再次進入登錄界面輸入賬號密碼,此時無論DNS將用戶1分配在服務(wù)器A還是服務(wù)器B上,服務(wù)器A或服務(wù)器B會給用戶1建立新的會話信息,此時服務(wù)器A或服務(wù)器B查詢存儲區(qū)后,存儲區(qū)中用戶1的會話信息與服務(wù)器A或服務(wù)器B上用戶1的會話信息不一致,則存儲區(qū)先清除已保存的用戶1在服務(wù)器A上的會話信息,再保存用戶1在服務(wù)器A或服務(wù)器B上的會話信息。
情況五、當(dāng)用戶1在服務(wù)器A上正常注銷登錄后沒有關(guān)閉瀏覽器時,瀏覽器在用戶正常注銷登錄后一段時間內(nèi)保存用戶1的會話信息,此時存儲區(qū)中保存的是用戶1在服務(wù)器A上的會話信息,這段時間內(nèi)用戶1進入原瀏覽器頁面輸入賬號密碼,若DNS根據(jù)負載均衡將用戶1分配在服務(wù)器A時,則瀏覽器將保存的用戶1的會話信息提交給服務(wù)器A,用戶1仍舊在服務(wù)器A上登錄并且用戶1在服務(wù)器A上的會話信息不發(fā)生改變,服務(wù)器A查詢存儲區(qū)中用戶1的會話信息后,得到存儲區(qū)中用戶1的會話信息與用戶1在服務(wù)器A上的會話信息一致,則存儲區(qū)繼續(xù)保存用戶1在服務(wù)器A上的會話信息;
情況六、當(dāng)用戶1在服務(wù)器A上正常注銷登錄后沒有關(guān)閉瀏覽器時,此時存儲區(qū)中保存的是用戶1在服務(wù)器A上的會話信息,用戶1再次進入原瀏覽器頁面輸入賬號密碼,若DNS根據(jù)負載均衡將用戶1分配在服務(wù)器B時,則用戶1服務(wù)器B上登錄成功,服務(wù)器B查詢存儲區(qū)中用戶1的會話信息后,得到存儲區(qū)中用戶1的會話信息與用戶1在服務(wù)器B上的會話信息不一致,則存儲區(qū)先清除已保存的用戶1在服務(wù)器A上的會話信息,再保存用戶1在服務(wù)器B上的會話信息。上述實施例中,存儲區(qū)只保存用戶最后一次成功登錄的會話信息,從而在后續(xù)用戶操作中,通過比較用戶操作的會話信息與存儲區(qū)中保存的用戶的會話信息可以判斷用戶是否重復(fù)登錄,從而使得用戶只能在最后一次成功登錄的服務(wù)器上操作。
可選的,還包括:
更新用戶在存儲區(qū)中的會話信息的生效時間;
若用戶在存儲區(qū)中的會話信息的生效時間在設(shè)定時間段內(nèi)沒有更新,則刪除用戶在存儲區(qū)中的會話信息。
具體實施中,存儲區(qū)中存儲的用戶的會話信息具有時效性,用戶的會話信息的生效時間可以根據(jù)具體情況進行設(shè)定。比如設(shè)定存儲區(qū)中用戶的會話信息生效時間是24小時,若服務(wù)器A將用戶1的會話信息保存到存儲區(qū)中24小時之后,服務(wù)器A或其他服務(wù)器沒有更新了存儲區(qū)中用戶1的會話信息,則存儲區(qū)中用戶1的會話信息將失效并刪除。
從上述內(nèi)容可看出:本發(fā)明實施例提供一種防止用戶重復(fù)登錄的方法和服務(wù)器,應(yīng)用于集群WEB環(huán)境中,第一服務(wù)器接收用戶的操作請求,第一服務(wù)器為集群WEB環(huán)境中用戶登錄成功的任意一個服務(wù)器;第一服務(wù)器判斷是否具有用戶的權(quán)限信息,若具有用戶的權(quán)限信息,則從存儲區(qū)獲取用戶的第一會話信息,第一會話信息為存儲區(qū)中存儲的用戶最后一次成功登錄的會話信息;第一服務(wù)器判斷第一會話信息與用戶當(dāng)前操作的第二會話信息是否相同;若第一會話信息與第二會話信息不相同,則不執(zhí)行用戶的操作請求。
由于用戶每次登錄集群WEB環(huán)境中后,根據(jù)負載均衡用戶可能分配到不同的服務(wù)器上,故用戶可能在不同的服務(wù)器上成功登錄;用戶一旦在服務(wù)器上登錄成功,登錄成功的服務(wù)器都會接收用戶操作請求,接收到用戶操作請求的服務(wù)器首先判斷自身是否包括用戶的權(quán)限信息,若服務(wù)器包含用戶的權(quán)限信息,則獲取存儲區(qū)中用戶的會話信息;由于存儲區(qū)中對于同一個用戶只存儲該用戶最后一次登錄成功的會話信息,故通過比較用戶當(dāng)前操作的會話信息和存儲區(qū)中用戶的會話信息可以判斷此時用戶是否在最后一次登錄成功的服務(wù)器上操作,若用戶當(dāng)前操作的會話信息和存儲區(qū)中用戶的會話信息不相同,說明此時用戶在其它服務(wù)器上登錄了,并且當(dāng)前不是在最后一次登錄成功的服務(wù)器上操作,故用戶當(dāng)前操作不能執(zhí)行,從而使得用戶只能在最后一次登錄成功的服務(wù)器上執(zhí)行操作,避免了用戶同時在多個服務(wù)器上登錄并操作造成的系統(tǒng)性能問題以及用戶賬號安全問題。
圖4示例性示出了本發(fā)明實施例提供的一種防止用戶重復(fù)登錄的服務(wù)器的結(jié)構(gòu)示意圖。
基于相同構(gòu)思,本發(fā)明實施例提供的一種防止用戶重復(fù)登錄的服務(wù)器的結(jié)構(gòu)示意圖,如圖4所示,該服務(wù)器包括登錄模塊401、接收模塊402、第一判斷模塊403、第二判斷模塊404和處理模塊405;其中:
接收模塊402,用于接收用戶的操作請求;
第一判斷模塊403,用于判斷所述服務(wù)器是否具有用戶的權(quán)限信息,若具有用戶的權(quán)限信息,則從存儲區(qū)獲取用戶的第一會話信息,第一會話信息為存儲區(qū)中存儲的用戶最后一次成功登錄的會話信息;
第二判斷模塊404,用于判斷第一會話信息與用戶當(dāng)前操作的第二會話信息是否相同;若第一會話信息與第二會話信息不相同,則不執(zhí)行所述用戶的操作請求。
可選的,第一判斷模塊403具體用于:
若服務(wù)器不具有用戶的權(quán)限信息,則注銷用戶在服務(wù)器上的登錄信息。
可選的,第二判斷模塊404還用于:
若第一會話信息與第二會話信息相同,則執(zhí)行用戶的操作請求。
可選的,還包括:
處理模塊405,用于若第一會話信息與第二會話信息不相同,則從服務(wù)器上刪除用戶的權(quán)限信息并注銷用戶在服務(wù)器上的登錄信息。
可選的,還包括:
登錄模塊401,用于獲取用戶的登錄請求并建立用戶的第二會話信息;
查詢存儲區(qū)中是否存有用戶的會話信息;
若存儲區(qū)中存有用戶的會話信息,則判斷第二會話信息與存儲區(qū)中保存的用戶的會話信息是否相同;
若不相同,則將第二會話信息作為用戶在存儲區(qū)中的會話信息。
可選的,登錄模塊401還用于:
若存儲區(qū)中未存有用戶的會話信息,則將用戶的第二會話信息保存至存儲區(qū)。
可選的,登錄模塊401還用于:
更新用戶在存儲區(qū)中的會話信息的生效時間;
若用戶在存儲區(qū)中的會話信息的生效時間在設(shè)定時間段內(nèi)沒有更新,則刪除用戶在存儲區(qū)中的會話信息。
從上述內(nèi)容可看出:本發(fā)明實施例提供一種防止用戶重復(fù)登錄的方法和服務(wù)器,應(yīng)用于集群WEB環(huán)境中,第一服務(wù)器接收用戶的操作請求,第一服務(wù)器為集群WEB環(huán)境中用戶登錄成功的任意一個服務(wù)器;第一服務(wù)器判斷是否具有用戶的權(quán)限信息,若具有用戶的權(quán)限信息,則從存儲區(qū)獲取用戶的第一會話信息,第一會話信息為存儲區(qū)中存儲的用戶最后一次成功登錄的會話信息;第一服務(wù)器判斷第一會話信息與用戶當(dāng)前操作的第二會話信息是否相同;若第一會話信息與第二會話信息不相同,則不執(zhí)行用戶的操作請求。
由于用戶每次登錄集群WEB環(huán)境中后,根據(jù)負載均衡用戶可能分配到不同的服務(wù)器上,故用戶可能在不同的服務(wù)器上成功登錄;用戶一旦在服務(wù)器上登錄成功,登錄成功的服務(wù)器都會接收用戶操作請求,接收到用戶操作請求的服務(wù)器首先判斷自身是否包括用戶的權(quán)限信息,若服務(wù)器包含用戶的權(quán)限信息,則獲取存儲區(qū)中用戶的會話信息;由于存儲區(qū)中對于同一個用戶只存儲該用戶最后一次登錄成功的會話信息,故通過比較用戶當(dāng)前操作的會話信息和存儲區(qū)中用戶的會話信息可以判斷此時用戶是否在最后一次登錄成功的服務(wù)器上操作,若用戶當(dāng)前操作的會話信息和存儲區(qū)中用戶的會話信息不相同,說明此時用戶在其它服務(wù)器上登錄了,并且當(dāng)前不是在最后一次登錄成功的服務(wù)器上操作,故用戶當(dāng)前操作不能執(zhí)行,從而使得用戶只能在最后一次登錄成功的服務(wù)器上執(zhí)行操作,避免了用戶同時在多個服務(wù)器上登錄并操作造成的系統(tǒng)性能問題以及用戶賬號安全問題。
本領(lǐng)域內(nèi)的技術(shù)人員應(yīng)明白,本發(fā)明的實施例可提供為方法、或計算機程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實施例、完全軟件實施例、或結(jié)合軟件和硬件方面的實施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、CD-ROM、光學(xué)存儲器等)上實施的計算機程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實施例的方法、設(shè)備(系統(tǒng))、和計算機程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機程序指令實現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合。可提供這些計算機程序指令到通用計算機、專用計算機、嵌入式處理機或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機器,使得通過計算機或其他可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機程序指令也可存儲在能引導(dǎo)計算機或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機可讀存儲器中,使得存儲在該計算機可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機程序指令也可裝載到計算機或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機實現(xiàn)的處理,從而在計算機或其他可編程設(shè)備上執(zhí)行的指令提供用于實現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
盡管已描述了本發(fā)明的優(yōu)選實施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實施例以及落入本發(fā)明范圍的所有變更和修改。
顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。