本發(fā)明涉及網(wǎng)絡(luò)技術(shù)領(lǐng)域,尤其涉及一種限制同一用戶賬號登錄終端數(shù)量的方法。
背景技術(shù):
隨著互聯(lián)網(wǎng)技術(shù)的蓬勃發(fā)展,用戶越來越普遍地通過終端設(shè)備接入互聯(lián)網(wǎng)辦理各種業(yè)務(wù)。在web應(yīng)用系統(tǒng)中,出于安全性考慮,需要限制同一個用戶賬號登錄多個終端設(shè)備的數(shù)量。
對于限制同一個用戶賬號登錄多個終端設(shè)備的數(shù)量,現(xiàn)有技術(shù)中的方法如下:
(1)使用mysql數(shù)據(jù)庫,在原有的用戶賬號的記錄中,添加是否已登錄、過期時間、設(shè)備唯一標(biāo)識符字段。設(shè)定是否登錄的條件為已登錄、登錄未過期、設(shè)備唯一標(biāo)識一致,每次用戶有操作時都更新過期時間值,如果一段時間沒有操作,則登錄狀態(tài)過期。
(2)使用mysq數(shù)據(jù)庫l,在用戶賬號記錄中添加token值,每次登錄根據(jù)時間戳和其他信息生成一個新的token值,不斷檢測token值,如果token值變化,則說明用戶賬戶在其他終端設(shè)備上登錄了。
使用mysql數(shù)據(jù)庫的效率比較低、無法實(shí)現(xiàn)動態(tài)時時限制同一個用戶賬號登錄多個終端設(shè)備。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供了一種限制同一用戶賬號登錄終端數(shù)量的方法,以解決現(xiàn)有技術(shù)中的限制方法效率低、無法實(shí)現(xiàn)動態(tài)時時限制同一個用戶賬號登錄終端設(shè)備的數(shù)量問題。
本發(fā)明實(shí)施例提供了一種限制同一用戶賬號登錄終端數(shù)量的方法,包括:
第一終端向web服務(wù)器發(fā)送登錄請求信息,所述登錄請求信息中包含用戶id和第一終端id;
所述web服務(wù)器從redis數(shù)據(jù)庫中調(diào)用所述用戶id對應(yīng)的登錄限制信息,所述登錄限制信息包含所述用戶id對應(yīng)的所有第二終端id和登錄條件;
從所述redis數(shù)據(jù)庫中調(diào)用所述用戶id當(dāng)前的所有登錄信息;
根據(jù)所述登錄信息判斷所述用戶id和所述第一終端id是否滿足所述登錄條件,如果否,則從所述登錄信息中提取登錄時間,將所述登錄時間與當(dāng)前時間進(jìn)行比對;
判斷所述登錄時間是否超出預(yù)設(shè)的時間閾值,如果否,則判斷所述用戶id當(dāng)前登錄的第二終端的數(shù)量是否達(dá)到預(yù)設(shè)的登錄數(shù)量閾值,如果是,則根據(jù)所述第一終端id向所述第一終端發(fā)送限制所述用戶id登錄的提示信息。
進(jìn)一步的,在從所述redis數(shù)據(jù)庫中調(diào)用所述用戶id當(dāng)前的所有登錄信息之前,所述方法還包括:
所述用戶id當(dāng)前登錄的所有所述第二終端按照預(yù)設(shè)的時間周期向所述web服務(wù)器發(fā)送登錄狀態(tài)信息;
所述web服務(wù)器根據(jù)所述登錄狀態(tài)信息更新所述redis數(shù)據(jù)庫中的登錄信息。
進(jìn)一步的,所述方法還包括:
當(dāng)所述web服務(wù)器在預(yù)設(shè)的時間周期內(nèi)沒有接收到所述第二終端發(fā)送的登錄狀態(tài)信息時,所述web服務(wù)器向所述第二終端發(fā)送所述用戶id退出登錄的提示消息。
進(jìn)一步的,在所述web服務(wù)器從redis數(shù)據(jù)庫中調(diào)用所述用戶id對應(yīng)的登錄限制信息之前,所述方法還包括;
所述web服務(wù)器將用戶id和第二終端id建立映射關(guān)系;
將所述映射關(guān)系和登錄條件生成string類型的登錄限制信息存儲在所述redis數(shù)據(jù)庫中。
進(jìn)一步的,所述判斷所述登錄時間是否超出預(yù)設(shè)的時間閾值具體包括:
計算所述登錄時間和所述當(dāng)前時間的時間差值;
判斷所述時間差值是否超出預(yù)設(shè)的時間閾值。
進(jìn)一步的,所述方法還包括:
當(dāng)所述登錄時間超出預(yù)設(shè)的時間閾值時,則向所述登錄時間對應(yīng)的終端發(fā)送所述用戶id退出登錄的提示信息。
進(jìn)一步的,所述登錄信息具體包括:
所述用戶id當(dāng)前登錄的所有第二終端的終端id和登錄時間信息。
本發(fā)明實(shí)施例提供的限制同一用戶賬號登錄終端數(shù)量的方法,第一終端向web服務(wù)器發(fā)送登錄請求信息,登錄請求信息中包含用戶id和第一終端id;web服務(wù)器從redis數(shù)據(jù)庫中調(diào)用用戶id對應(yīng)的登錄限制信息,登錄限制信息包含用戶id對應(yīng)的所有第二終端id和登錄條件;判斷用戶id和第一終端id是否滿足登錄條件,如果否,則從redis數(shù)據(jù)庫中調(diào)用用戶id當(dāng)前的所有登錄信息;從登錄信息中提取登錄時間,將登錄時間與當(dāng)前時間進(jìn)行比對;判斷登錄時間是否超出預(yù)設(shè)的時間閾值,如果否,則判斷用戶id當(dāng)前登錄的第二終端終端數(shù)量是否達(dá)到預(yù)設(shè)的登錄數(shù)量閾值,如果是,則根據(jù)第一終端id向第一終端發(fā)送限制用戶id登錄的提示信息。本發(fā)明實(shí)施例提供的方法,能夠?qū)崿F(xiàn)動態(tài)時時限制同一個用戶賬號登錄終端設(shè)備的數(shù)量,處理速度快,效率高。
附圖說明
圖1為本發(fā)明實(shí)施例提供的限制同一用戶賬號登錄終端數(shù)量的方法的流程圖。
具體實(shí)施方式
為了使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對本發(fā)明作進(jìn)一步地詳細(xì)描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部份實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其它實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
本發(fā)明技術(shù)方案中的第一終端、第二終端具體包括具有處理能力的終端設(shè)備,例如,臺式電腦、筆記本電腦、平板電腦、智能手機(jī)、智能電視等。
下面結(jié)合圖1所示的限制同一用戶賬號登錄終端數(shù)量的方法流程圖,對本發(fā)明實(shí)施例提供的限制同一用戶賬號登錄終端數(shù)量的方法進(jìn)行詳細(xì)說明。
如圖1所示,本發(fā)明提供的限制同一用戶賬號登錄終端數(shù)量的方法主要包括如下步驟:
步驟101,第一終端向web服務(wù)器發(fā)送登錄請求信息。
其中,登錄請求信息中包含用戶id和第一終端id。用戶id為用戶的唯一標(biāo)識符,例如用戶的賬號信息等。第一終端id為第一終端的唯一標(biāo)識符,例如,終端的媒體訪問控制(mediaaccesscontrol,mac)地址、終端的序列號等。
當(dāng)用戶賬號登錄第一終端時,第一終端接收用戶輸入的登錄指令,根據(jù)登錄指令向web服務(wù)器發(fā)送登錄請求信息。
步驟102,web服務(wù)器從redis數(shù)據(jù)庫中調(diào)用用戶id對應(yīng)的登錄限制信息。
其中,登錄限制信息包含用戶id對應(yīng)的所有第二終端id和登錄條件。
在web服務(wù)器從redis數(shù)據(jù)庫中調(diào)用用戶id對應(yīng)的登錄限制信息之前,web服務(wù)器將用戶id和第二終端id建立映射關(guān)系;將映射關(guān)系和登錄條件生成string類型的登錄限制信息存儲在redis數(shù)據(jù)庫中。
利用rredis數(shù)據(jù)庫的string類型數(shù)據(jù)結(jié)構(gòu)來存儲用戶的登錄終端限制臺數(shù)的配置信息,可以實(shí)現(xiàn)對每個用戶動態(tài)的設(shè)置配置信息。
步驟103,從redis數(shù)據(jù)庫中調(diào)用用戶id當(dāng)前的所有登錄信息。
在從redis數(shù)據(jù)庫中調(diào)用用戶id當(dāng)前的所有登錄信息之前,用戶id當(dāng)前登錄的所有第二終端按照預(yù)設(shè)的時間周期向web服務(wù)器發(fā)送登錄狀態(tài)信息;web服務(wù)器根據(jù)登錄狀態(tài)信息更新redis數(shù)據(jù)庫中的登錄信息。
當(dāng)web服務(wù)器在預(yù)設(shè)的時間周期內(nèi)沒有接收到第二終端發(fā)送的登錄狀態(tài)信息時,web服務(wù)器向第二終端發(fā)送用戶id退出登錄的提示消息。
具體的,利用rredis數(shù)據(jù)庫的hash類型數(shù)據(jù)結(jié)構(gòu)來存儲用戶當(dāng)前登錄所有終端設(shè)備的登錄信息,hash結(jié)構(gòu)中使用keyfieldvalue寫入數(shù)據(jù),key的值為用戶的唯一標(biāo)識符,field的值為終端設(shè)備的唯一標(biāo)識符,value的值取用戶登錄時的時間,設(shè)備終端會每隔一段時間上報用戶的登錄狀態(tài),在使用相同的keyfield寫入數(shù)據(jù)時,覆蓋歷史數(shù)據(jù),實(shí)現(xiàn)數(shù)據(jù)的更新,如果設(shè)備終端長時間未上報用戶的登錄狀態(tài)默認(rèn)該用戶在該終端設(shè)備上下線。通過統(tǒng)計key中field的有效信息的數(shù)量來實(shí)現(xiàn)動態(tài)時時限制同一個用戶賬號登錄終端臺數(shù)的需求。
步驟104,根據(jù)登錄信息判斷用戶id和第一終端id是否滿足登錄條件,如果否,則執(zhí)行步驟105。
登錄條件具體包括:第一終端id和用戶id對應(yīng)的多個第二終端id其中之一匹配,并且用戶id當(dāng)前登錄的第二終端的數(shù)量小于預(yù)設(shè)的登錄數(shù)量閾值。
判斷用戶id和第一終端id是否滿足登錄條件包括以下兩方面:
第一,判斷第一終端id和用戶id對應(yīng)的多個第二終端id其中之一匹配;
第二,通過用戶id當(dāng)前的登錄信息來統(tǒng)計用戶id當(dāng)前登錄的第二終端的數(shù)量,該數(shù)量小于預(yù)設(shè)的登錄數(shù)量閾值。
只要不滿足以上條件其中之一,則認(rèn)定不滿足登錄條件。
步驟105,從登錄信息中提取登錄時間,將登錄時間與當(dāng)前時間進(jìn)行比對。
登錄信息具體包括:用戶id當(dāng)前登錄的所有第二終端的終端id和登錄時間信息。
如果不滿足登錄條件,則從登錄信息中提取用戶id當(dāng)前登錄的所有第二終端對應(yīng)的登錄時間信息,將登錄時間與當(dāng)前時間進(jìn)行比較,目的是判斷用戶id當(dāng)前的登錄狀態(tài)是否有效。
步驟106,判斷登錄時間是否超出預(yù)設(shè)的時間閾值,如果否,則執(zhí)行步驟107。
計算登錄時間和當(dāng)前時間的時間差值;判斷時間差值是否超出預(yù)設(shè)的時間閾值。當(dāng)?shù)卿洉r間沒有超出預(yù)設(shè)的時間閾值時,說明用戶id當(dāng)前登錄的所有第二終端的登錄狀態(tài)均有效,執(zhí)行步驟107。
當(dāng)?shù)卿洉r間超出預(yù)設(shè)的時間閾值時,則向登錄時間對應(yīng)的終端發(fā)送用戶id退出登錄的提示信息。
例如,web服務(wù)器預(yù)設(shè)的有效的登錄時間為15分鐘,將用戶id在當(dāng)前登錄的所有第二終端的登錄時間與當(dāng)前時間進(jìn)行比較,如果登錄超過15分鐘,則當(dāng)前登錄狀態(tài)為無效登錄狀態(tài),web服務(wù)器向該第二終端發(fā)送提示信息,表明該用戶已退出登錄,更新數(shù)據(jù)庫中的登錄信息。
步驟107,判斷用戶id當(dāng)前登錄的第二終端的數(shù)量是否達(dá)到預(yù)設(shè)的登錄數(shù)量閾值,如果是,則執(zhí)行步驟108。
如果用戶id當(dāng)前登錄的所有第二終端的登錄狀態(tài)均有效,則進(jìn)一步判斷用戶id當(dāng)前登錄的所有第二終端的數(shù)量是否達(dá)到預(yù)設(shè)的登錄數(shù)量閾值,如果沒有達(dá)到,則允許用戶id登錄第一終端,如果已經(jīng)達(dá)到,則限制登錄,執(zhí)行步驟108。
步驟108,根據(jù)第一終端id向第一終端發(fā)送限制用戶id登錄的提示信息。
本發(fā)明技術(shù)方案使用可基于內(nèi)存亦可持久化的日志型、key-value數(shù)據(jù)庫redis,使用redis中的string類型的數(shù)據(jù)結(jié)構(gòu)來存儲用戶的登錄限制信息,用hash類型的數(shù)據(jù)結(jié)構(gòu)來存儲用戶登錄終端設(shè)備的登錄信息,通過對同一個用戶賬號有效登錄終端設(shè)備信息的統(tǒng)計,達(dá)到動態(tài)時時的限制同一個用戶賬號登錄多個終端設(shè)備的數(shù)量。
本發(fā)明實(shí)施例提供的限制同一用戶賬號登錄終端數(shù)量的方法,第一終端向web服務(wù)器發(fā)送登錄請求信息,登錄請求信息中包含用戶id和第一終端id;web服務(wù)器從redis數(shù)據(jù)庫中調(diào)用用戶id對應(yīng)的登錄限制信息,登錄限制信息包含用戶id對應(yīng)的所有第二終端id和登錄條件;判斷用戶id和第一終端id是否滿足登錄條件,如果否,則從redis數(shù)據(jù)庫中調(diào)用用戶id當(dāng)前的所有登錄信息;從登錄信息中提取登錄時間,將登錄時間與當(dāng)前時間進(jìn)行比對;判斷登錄時間是否超出預(yù)設(shè)的時間閾值,如果否,則判斷用戶id當(dāng)前登錄的第二終端終端數(shù)量是否達(dá)到預(yù)設(shè)的登錄數(shù)量閾值,如果是,則根據(jù)第一終端id向第一終端發(fā)送限制用戶id登錄的提示信息。本發(fā)明實(shí)施例提供的方法,能夠?qū)崿F(xiàn)動態(tài)時時限制同一個用戶賬號登錄終端設(shè)備的數(shù)量,處理速度快,效率高。
專業(yè)人員應(yīng)該還可以進(jìn)一步意識到,結(jié)合本文中所公開的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件來實(shí)現(xiàn),在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。對每個特定的應(yīng)用來使用不同方法來實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明實(shí)施例的范圍。具體地,所述運(yùn)算和控制部分都可以通絡(luò)邏輯硬件實(shí)現(xiàn),其可以是使用集成電路工藝制造出來的邏輯集成電路,本實(shí)施例對此不作限定。
結(jié)合本文中所公開的實(shí)施例描述的方法或算法的步驟可以用硬件、處理器執(zhí)行的軟件模塊,或者二者的結(jié)合來實(shí)施。軟件模塊可以置于隨機(jī)存儲器(ram)、內(nèi)存、只讀存儲器(rom)、電可編程rom、電可擦除可編程rom、寄存器、硬盤、可移動磁盤、cd-rom、或技術(shù)領(lǐng)域內(nèi)所公知的任意其它形式的存儲介質(zhì)中。
以上所述的具體實(shí)施方式,對本發(fā)明實(shí)施例的目的、技術(shù)方案和有益效果進(jìn)行了進(jìn)一步詳細(xì)說明,所應(yīng)理解的是,以上所述僅為本發(fā)明實(shí)施例的具體實(shí)施方式而已,并不用于限定本發(fā)明實(shí)施例的保護(hù)范圍,凡在本發(fā)明實(shí)施例的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明實(shí)施例的保護(hù)范圍之內(nèi)。