本發(fā)明涉及互聯(lián)網(wǎng)領(lǐng)域,特別涉及一種客戶端登錄方法。
背景技術(shù):
隨著互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,越來越多的應(yīng)用客戶端出現(xiàn)在人們的生活中,用戶通過登錄這些應(yīng)用客戶端從互聯(lián)網(wǎng)獲取服務(wù)。通常,用戶登錄客戶端經(jīng)過密碼驗(yàn)證之后就可以登錄至客戶端對應(yīng)的后臺(tái)服務(wù)器,這樣可能會(huì)存在一個(gè)賬戶在兩個(gè)客戶端登錄的情況,對用戶的信息安全來說是極大的隱患。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供了一種客戶端登錄方法,解決了現(xiàn)有技術(shù)用戶在登錄客戶端時(shí)不能保障用戶信息的安全性的技術(shù)問題。
本發(fā)明解決上述技術(shù)問題的技術(shù)方案如下:一種客戶端登錄方法,包括:
s1、接收并解析客戶端發(fā)送的用戶的登錄請求事件,得到登錄信息,所述登錄信息包括客戶端類型、客戶端版本信息和加密驗(yàn)證信息,所述加密驗(yàn)證信息包括:用戶id和密碼;
s2、判斷會(huì)話緩存中是否存在所述用戶的歷史登錄信息,如果存在則根據(jù)所述歷史登錄信息對所述用戶id進(jìn)行初步驗(yàn)證,如果不存在則根據(jù)所述用戶id從數(shù)據(jù)庫中獲取所述用戶的用戶對象信息,根據(jù)所述用戶對象信息對所述用戶id進(jìn)行初步驗(yàn)證;
s3、初步驗(yàn)證成功后,在連接注冊子服務(wù)對象的驗(yàn)證服務(wù)對象中對所述加密驗(yàn)證信息進(jìn)行密碼驗(yàn)證,密碼驗(yàn)證成功后對所述客戶端版本信息進(jìn)行客戶端版本驗(yàn)證;
s4、客戶端版本驗(yàn)證成功后,為所述用戶創(chuàng)建會(huì)話上下文對象,在所述會(huì)話上下文對象中創(chuàng)建所述用戶的標(biāo)簽值,所述標(biāo)簽值包括:客戶端類型、用戶id、服務(wù)器名稱和當(dāng)前時(shí)間;
s5、判斷所述連接注冊子服務(wù)對象中是否存在所述用戶id,如是則返回第一錯(cuò)誤提示信息,否則在所述連接注冊子服務(wù)對象中為所述用戶進(jìn)行注冊登錄。
本發(fā)明的有益效果是:本技術(shù)方案對用戶的登錄信息進(jìn)行初步驗(yàn)證、密碼驗(yàn)證以及客戶端版本驗(yàn)證,保證了用戶的登錄信息的安全性。
在上述技術(shù)方案的基礎(chǔ)上,本發(fā)明還可以做如下改進(jìn)。
優(yōu)選地,步驟s5中,在所述連接注冊子服務(wù)對象中為所述用戶進(jìn)行注冊登錄的方法包括:
創(chuàng)建所述用戶的會(huì)話模型對象,根據(jù)所述用戶id加載所述用戶的偏好屬性設(shè)置值,將所述用戶的會(huì)話狀態(tài)設(shè)置為活動(dòng)狀態(tài),并根據(jù)所述用戶id更新所述會(huì)話緩存和所述數(shù)據(jù)庫。
優(yōu)選地,所述登錄信息還包括:客戶端的連接id、客戶端ip地址、客戶端mac地址和客戶端版本信息。
優(yōu)選地,步驟s2中,根據(jù)所述歷史登錄信息對所述用戶id進(jìn)行初步驗(yàn)證之前,還包括:
a1、檢查所述歷史登錄信息中包括的歷史登錄狀態(tài);
a2、如果所述歷史登錄狀態(tài)為活動(dòng)狀態(tài),則生成并推送用于詢問用戶是否強(qiáng)制登錄的客戶端事件,如果所述用戶選擇強(qiáng)制登錄則注銷所述用戶id對應(yīng)的歷史登錄事件,否則退出執(zhí)行;
a3、如果所述歷史登錄狀態(tài)為非活動(dòng)狀態(tài),則將所述歷史登錄信息標(biāo)識(shí)為廢棄狀態(tài);
a4、如果所述歷史登錄狀態(tài)為正在注銷中,則等待正在注銷中的所述用戶id對應(yīng)的歷史登錄事件注銷完成。
優(yōu)選地,通過預(yù)設(shè)線程定期從所述會(huì)話緩存中回收標(biāo)識(shí)為廢棄狀態(tài)的所有歷史登錄信息。
優(yōu)選地,步驟s2中,對所述用戶id進(jìn)行初步驗(yàn)證的方法包括:
b1、根據(jù)所述歷史登錄信息或所述用戶對象信息判斷所述用戶id是否被鎖定,如果被鎖定則判斷是否超過解鎖時(shí)間,如果超過則執(zhí)行步驟b3,如果未超過則返回第二錯(cuò)誤提示信息;
b2、如果沒有被鎖定則判斷所述用戶id的連續(xù)登錄錯(cuò)誤次數(shù)是否超過預(yù)設(shè)次數(shù),如是則對所述用戶id進(jìn)行鎖定,返回第三錯(cuò)誤提示消息,并退出執(zhí)行,否則執(zhí)行步驟b3;
b3、判斷所述客戶端ip地址或所述客戶端mac地址是否為禁止登錄地址,如是則返回第四錯(cuò)誤提示信息,并退出執(zhí)行,否則表示初步驗(yàn)證成功。
優(yōu)選地,步驟s3包括:
s31、初步驗(yàn)證成功后,根據(jù)所述用戶id獲取所述用戶所屬公司的公司信息;
s32、根據(jù)所述公司信息判斷所述公司是否被禁止交易,如是則退出執(zhí)行,否則在連接注冊子服務(wù)對象的驗(yàn)證服務(wù)對象中對所述加密驗(yàn)證信息進(jìn)行密碼驗(yàn)證;
s33、密碼驗(yàn)證成功后,判斷所述客戶端版本信息包括的版本號(hào)是否符合預(yù)定版本號(hào),如是則執(zhí)行步驟s34,否則返回第五錯(cuò)誤提示信息,并退出執(zhí)行;
s34、判斷所述客戶端的版本是否需要強(qiáng)制升級(jí),如是則啟動(dòng)升級(jí)模塊,并退出執(zhí)行,否則生成并推送用于詢問用戶是否升級(jí)的客戶端事件,如果所述用戶選擇升級(jí)則啟動(dòng)升級(jí)模塊,并退出執(zhí)行,否則表示客戶端版本驗(yàn)證成功。
優(yōu)選地,步驟s1之前,還包括:
s0、創(chuàng)建socket通道,接收并驗(yàn)證客戶端發(fā)送的連接請求,生成所述客戶端對應(yīng)的連接id,將所述連接id發(fā)送給所述客戶端,與所述客戶端建立socket連接。
附圖說明
圖1為本發(fā)明實(shí)施例提供的一種客戶端登錄方法的流程示意圖;
圖2為本發(fā)明另一實(shí)施例提供的一種客戶端登錄方法的流程示意圖;
圖3為本發(fā)明另一實(shí)施例提供的一種客戶端登錄方法的流程示意圖;
圖4為本發(fā)明另一實(shí)施例提供的一種客戶端登錄方法的流程示意圖;
圖5為本發(fā)明另一實(shí)施例提供的一種客戶端登錄方法的流程示意圖。
具體實(shí)施方式
以下結(jié)合附圖對本發(fā)明的原理和特征進(jìn)行描述,所舉實(shí)例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。
如圖1所示,一種客戶端登錄方法,包括:
s1、接收并解析客戶端發(fā)送的用戶的登錄請求事件,得到登錄信息,登錄信息包括客戶端類型、客戶端版本信息和加密驗(yàn)證信息,加密驗(yàn)證信息包括:用戶id和密碼;
s2、判斷會(huì)話緩存中是否存在用戶的歷史登錄信息,如果存在則根據(jù)歷史登錄信息對用戶id進(jìn)行初步驗(yàn)證,如果不存在則根據(jù)用戶id從數(shù)據(jù)庫中獲取用戶的用戶對象信息,根據(jù)用戶對象信息對用戶id進(jìn)行初步驗(yàn)證;
s3、初步驗(yàn)證成功后,在連接注冊子服務(wù)對象的驗(yàn)證服務(wù)對象中對加密驗(yàn)證信息進(jìn)行密碼驗(yàn)證,密碼驗(yàn)證成功后對客戶端版本信息進(jìn)行客戶端版本驗(yàn)證;
s4、客戶端版本驗(yàn)證成功后,為用戶創(chuàng)建會(huì)話上下文對象,在會(huì)話上下文對象中創(chuàng)建用戶的標(biāo)簽值,標(biāo)簽值包括:客戶端類型、用戶id、服務(wù)器名稱和當(dāng)前時(shí)間;
s5、判斷連接注冊子服務(wù)對象中是否存在用戶id,如是則返回第一錯(cuò)誤提示信息,否則在連接注冊子服務(wù)對象中為用戶進(jìn)行注冊登錄。
應(yīng)理解,用戶在客戶端輸入用戶名和密碼,或者還需要輸入短信驗(yàn)證碼或者下載證書,客戶端將所有登錄信息進(jìn)行封裝,在與服務(wù)器連接成功后,發(fā)送給服務(wù)器,服務(wù)器接收到客戶端發(fā)送的登錄請求事件后,解析得到登錄信息,然后查看會(huì)話緩存中是否存在用戶的歷史登錄信息,如果存在則可以直接從歷史登錄信息中調(diào)取數(shù)據(jù)進(jìn)行初步驗(yàn)證,如果不存在則可以從數(shù)據(jù)庫中調(diào)取數(shù)據(jù)進(jìn)行初步驗(yàn)證。初步驗(yàn)證包括用戶是否被鎖定、登錄錯(cuò)誤次數(shù)是否超過預(yù)設(shè)次數(shù)、是否超過解鎖時(shí)間以及該客戶端是否被禁止登錄等。初步驗(yàn)證通過后,通過連接注冊子服務(wù)對象的驗(yàn)證服務(wù)對象對賬戶密碼進(jìn)行進(jìn)一步驗(yàn)證,如果賬戶密碼均匹配則表示密碼驗(yàn)證成功,密碼驗(yàn)證成功后對客戶端版本信息進(jìn)行客戶端版本驗(yàn)證,因?yàn)槿绻姹静环项A(yù)設(shè)版本則不能進(jìn)行登錄,全部驗(yàn)證完畢后,還需檢查連接注冊子服務(wù)對象中是否已經(jīng)注冊過該用戶id,如果已經(jīng)存在該用戶id,則返回錯(cuò)誤提示消息,如果不存在則在連接注冊子服務(wù)對象中為用戶進(jìn)行注冊登錄。
具體地,步驟s5中,在連接注冊子服務(wù)對象中為用戶進(jìn)行注冊登錄的方法包括:
創(chuàng)建用戶的會(huì)話模型對象,根據(jù)用戶id加載用戶的偏好屬性設(shè)置值,將用戶的會(huì)話狀態(tài)設(shè)置為活動(dòng)狀態(tài),并根據(jù)用戶id更新會(huì)話緩存和數(shù)據(jù)庫。具體地,根據(jù)用戶id更新會(huì)話緩存中的歷史登錄信息和數(shù)據(jù)庫中的用戶對象信息。
具體地,登錄信息還包括:客戶端的連接id、客戶端ip地址、客戶端mac地址和客戶端版本信息。
如圖2所示,步驟s2中,根據(jù)歷史登錄信息對用戶id進(jìn)行初步驗(yàn)證之前,還包括:
a1、檢查歷史登錄信息中包括的歷史登錄狀態(tài);
a2、如果歷史登錄狀態(tài)為活動(dòng)狀態(tài),則生成并推送用于詢問用戶是否強(qiáng)制登錄的客戶端事件,如果用戶選擇強(qiáng)制登錄則注銷用戶id對應(yīng)的歷史登錄事件,否則退出執(zhí)行;
a3、如果歷史登錄狀態(tài)為非活動(dòng)狀態(tài),則將歷史登錄信息標(biāo)識(shí)為廢棄狀態(tài);
a4、如果歷史登錄狀態(tài)為正在注銷中,則等待正在注銷中的用戶id對應(yīng)的歷史登錄事件注銷完成。
應(yīng)理解,根據(jù)歷史登錄信息對用戶進(jìn)行初步驗(yàn)證之前,需要檢查歷史登錄信息中包括的歷史登錄狀態(tài),如果歷史登錄狀態(tài)為活動(dòng)狀態(tài),則表示該用戶id已經(jīng)被登錄了,由于一個(gè)賬戶不能同時(shí)登錄兩次,此時(shí)需要詢問用戶是否強(qiáng)制登錄,如果強(qiáng)制登錄則需要注銷原來的登錄事件,如果歷史登錄狀態(tài)為非活動(dòng)狀態(tài),則需要將歷史登錄信息標(biāo)識(shí)為廢棄狀態(tài),如果歷史登錄狀態(tài)為正在注銷中,說明上一次的注銷還沒完成,需要等注銷完成后才進(jìn)行下一步。
具體地,通過預(yù)設(shè)線程定期從會(huì)話緩存中回收標(biāo)識(shí)為廢棄狀態(tài)的所有歷史登錄信息。
如圖3所示,步驟s2中,對用戶id進(jìn)行初步驗(yàn)證的方法包括:
b1、根據(jù)歷史登錄信息或用戶對象信息判斷用戶id是否被鎖定,如果被鎖定則判斷是否超過解鎖時(shí)間,如果超過則執(zhí)行步驟b3,如果未超過則返回第二錯(cuò)誤提示信息;
b2、如果沒有被鎖定則判斷用戶id的連續(xù)登錄錯(cuò)誤次數(shù)是否超過預(yù)設(shè)次數(shù),如是則對用戶id進(jìn)行鎖定,返回第三錯(cuò)誤提示消息,并退出執(zhí)行,否則執(zhí)行步驟b3;
b3、判斷客戶端ip地址或客戶端mac地址是否為禁止登錄地址,如是則返回第四錯(cuò)誤提示信息,并退出執(zhí)行,否則表示初步驗(yàn)證成功。
應(yīng)理解,如果會(huì)話緩存中存在歷史登錄信息,則根據(jù)歷史登錄信息中包括的鎖定信息判斷用戶id是否被鎖定,如果會(huì)話緩存中不存在歷史登錄信息,則根據(jù)用戶對象信息中包括的鎖定信息判斷用戶id是否被鎖定,在確定用戶被鎖定后,解鎖時(shí)間內(nèi)不允許用戶再次嘗試登錄,如果嘗試登錄則返回錯(cuò)誤提示信息。
如圖4所示,步驟s3包括:
s31、初步驗(yàn)證成功后,根據(jù)用戶id獲取用戶所屬公司的公司信息;
s32、根據(jù)公司信息判斷公司是否被禁止交易,如是則退出執(zhí)行,否則在連接注冊子服務(wù)對象的驗(yàn)證服務(wù)對象中對加密驗(yàn)證信息進(jìn)行密碼驗(yàn)證;
s33、密碼驗(yàn)證成功后,判斷客戶端版本信息包括的版本號(hào)是否符合預(yù)定版本號(hào),如是則執(zhí)行步驟s34,否則返回第五錯(cuò)誤提示信息,并退出執(zhí)行;
s34、判斷客戶端的版本是否需要強(qiáng)制升級(jí),如是則啟動(dòng)升級(jí)模塊,并退出執(zhí)行,否則生成并推送用于詢問用戶是否升級(jí)的客戶端事件,如果用戶選擇升級(jí)則啟動(dòng)升級(jí)模塊,并退出執(zhí)行,否則表示客戶端版本驗(yàn)證成功。
如圖5所示,步驟s1之前,還包括:
s0、創(chuàng)建socket通道,接收并驗(yàn)證客戶端發(fā)送的連接請求,生成客戶端對應(yīng)的連接id,將連接id發(fā)送給客戶端,與客戶端建立socket連接。
應(yīng)理解,如果客戶端與服務(wù)器之間沒有建立連接,就表示兩者不能通信,服務(wù)器無法接收客戶端發(fā)送的任何消息,所以在客戶端發(fā)送登錄請求之前,必須先與服務(wù)器建立連接。
以上所述僅為本發(fā)明的較佳實(shí)施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。