Java QQ項(xiàng)目詳細(xì)設(shè)計(jì)之:安全模塊
今天繼續(xù)講java qq項(xiàng)目的詳細(xì)設(shè)計(jì),今天講一下qq的安全模塊,包括客戶端安全模塊和服務(wù)器接收請(qǐng)求并處理后返回結(jié)果以及兩者協(xié)作的過程,以流程圖的方式講述一下
客戶端的安全模塊流程及偽碼如下:
- 對(duì)在飛Q安全界面中,分為“安全概述”,“常見欺詐”,“修改密碼”,“修改密保”;
- <1> 安全概述
- 安全概述 概述了你當(dāng)前飛Q的安全狀況
- if (設(shè)置密保并且密碼等級(jí)為良好以上)
- {
- 安全狀況良好請(qǐng)繼續(xù)保持良好的習(xí)慣
- 可立即完成設(shè)置密碼
- }
- else if (設(shè)置密保并且密碼等級(jí)為中等以下)
- {
- 安全狀況存在隱患請(qǐng)定期修改密碼
- 立即完成設(shè)置密碼
- }
- else
- {
- 安全狀況危險(xiǎn)請(qǐng)立刻設(shè)置密保問題
- 立即完成設(shè)置密保
- }
- <2> 常見欺詐
- 常見的集中欺詐方式:釣魚網(wǎng)址,視頻欺詐,中獎(jiǎng)欺詐,冒充好友欺詐;
- <3> 修改密碼
- 修改密碼之前請(qǐng)確保設(shè)置密保;
- 如果沒有設(shè)置密保問題,請(qǐng)先設(shè)置密保問題,以確保該賬戶的安全性。如果設(shè)置了密保問題,請(qǐng)先輸入原密保問題,核對(duì)用戶身份。密保正確才可以修改,如果錯(cuò)誤,對(duì)不起,不能修改密碼。
- if(三個(gè)密保問題有空)
- {
- 對(duì)不起,密保問題回答不能為空!
- 沒填寫的須不完整
- }
- else
- {
- 向服務(wù)器獲取對(duì)應(yīng)密保問題的答案
- If(回答錯(cuò)誤)
- {
- 提示:對(duì)不起,密保問題回答不能正確
- 全部清空,重新輸入
- }
- else
- {
- 修改密碼
- 輸入舊密碼
- if (輸入的舊密碼正確)
- {
- if (新密碼為空)
- {
- 提示:密碼不能為空
- }
- else if (兩次密碼輸入不一致)
- {
- 提示:兩次密碼輸入不一致
- }
- else if (兩次密碼輸入一致并且不空)
- {
- 向服務(wù)器發(fā)送該賬號(hào)的新密碼
- }
- }
- else
- {
- 提示:密碼有誤,請(qǐng)重新輸入
- }
- }
- }
- <4> 修改密保
- 如果沒有設(shè)置密保問題,設(shè)置密保問題。
- 如果設(shè)置了密保問題,請(qǐng)先輸入原密保問題,核對(duì)用戶身份。密保正確才可以修改,如果錯(cuò)誤,對(duì)不起,不能修改密保。
- if(沒有設(shè)置密保)
- {
- 選擇密保問題回答
- If(選擇的密保問題重復(fù))
- {
- 提示:選擇的密保問題重復(fù)
- 重新選擇密保問題
- }
- Else if(修改密保時(shí)驗(yàn)證密保問題為空)
- {
- 提示:修改密保時(shí)驗(yàn)證密保問題為空
- }
- Else
- {
- 服務(wù)器發(fā)送該賬號(hào)的新密保問題和新密保問題對(duì)應(yīng)的答案
- }
- }
- else
- {
- 已經(jīng)設(shè)置設(shè)置密保
- 向服務(wù)器獲取對(duì)應(yīng)密保問題的答案
- 輸入密保問題答案(用戶)
- If(回答錯(cuò)誤)
- {
- 提示:對(duì)不起,密保問題回答不能正確
- 全部清空,重新輸入
- }
- else
- {
- 修改密保
- 選擇密保問題回答
- If(選擇的密保問題重復(fù))
- {
- 提示:選擇的密保問題重復(fù)
- 重新選擇密保問題
- }
- Else if(修改密保時(shí)驗(yàn)證密保問題為空)
- {
- 提示:修改密保時(shí)驗(yàn)證密保問題為空
- }
- Else
- {
- 服務(wù)器發(fā)送該賬號(hào)的新密保問題和新密保問題對(duì)應(yīng)的答案
- }
- }
- }
流程圖如下:
服務(wù)器的安全模塊分為以下幾個(gè)子模塊:
- 設(shè)置密保模塊
- 判斷是否設(shè)置密保模塊
- 判斷密保答案是否正確模塊
- 修改密保模塊
- 修改密碼模塊
- 找回密碼
服務(wù)器端的流程偽碼如下:
- 1、設(shè)置密保模塊
- 用戶發(fā)送修改好友昵稱信息包,服務(wù)器解析成基本數(shù)據(jù),在數(shù)據(jù)庫中找到該用戶的的信息,將密保問題和答案寫入該用戶的數(shù)據(jù)庫中,假如已有密保問題則轉(zhuǎn)到重設(shè)密保模塊
- 2、判斷是否設(shè)置密保模塊
- 用戶發(fā)送請(qǐng)求后,服務(wù)器解析出數(shù)據(jù),在數(shù)據(jù)庫中找到該好友,查看該好友是否設(shè)置密保,
- If(設(shè)置了密保)
- {
- 返回密保問題
- }
- Else if(沒有設(shè)置密保)
- {
- 發(fā)送回去沒有設(shè)置密保的標(biāo)識(shí)
- }
- 3、判斷密保答案是否正確模塊
- 用戶發(fā)送給服務(wù)器密保答案信息,服務(wù)器解析出相應(yīng)的數(shù)據(jù),從數(shù)據(jù)庫中查找該用戶的信息,得到密保問題和答案,進(jìn)行判斷三個(gè)問題是否全部回答對(duì)
- If(三個(gè)密保問題全回答對(duì))
- {
- 向該用戶客戶端發(fā)送驗(yàn)證成功的消息
- }
- Else(三個(gè)問題不全對(duì)或全不對(duì))
- {
- 向該用戶客戶端發(fā)送驗(yàn)證失敗信息
- }
- 4、修改密保模塊
- 這里說明一下,修改密保的模塊是在驗(yàn)證密保答案正確的前提下才能進(jìn)入的,所以此模塊僅僅是覆蓋掉該用戶的,特此聲明,呵呵,聲明有點(diǎn)晚了。。
- 沒有復(fù)雜邏輯判斷,思路如下:
- 用戶發(fā)送給服務(wù)器新密保信息,服務(wù)器解析出相應(yīng)的數(shù)據(jù),從數(shù)據(jù)庫中查找該用戶,在數(shù)據(jù)庫中重寫此人的密保問題和答案,然后子線程接收。
- 5、修改密碼模塊
- 聲明如7.4所示,不再重復(fù)
- 思路如下:
- 用戶發(fā)送給服務(wù)器新密碼信息,服務(wù)器解析出相應(yīng)的數(shù)據(jù),從數(shù)據(jù)庫中查找該用戶,在數(shù)據(jù)庫中重寫此人的密碼,同時(shí)將新設(shè)置的密碼加入內(nèi)存中用戶密碼hashmap中,然后子線程接收。
- 6、找回密碼
- 找回密碼其實(shí)和重設(shè)密保有什么相識(shí)的地方,都是先驗(yàn)證信息密保信息是否正確,然后根據(jù)正確與否做出相應(yīng)的處理
- 用戶發(fā)送請(qǐng)求后,服務(wù)器解析出數(shù)據(jù),在數(shù)據(jù)庫中找到該好友,查看該好友是否設(shè)置密保,
- If(設(shè)置了密保)
- {
- 返回密保問題
- 。。。
- 判斷接受的密保答案是否正確
- If(三個(gè)問題都回答正確)
- {
- 返回驗(yàn)證成功信息,通知客戶端轉(zhuǎn)入重設(shè)密碼模塊
- }
- Else
- {
- 返回驗(yàn)證失敗信息
- }
- }
- Else if(沒有設(shè)置密保)
- {
- 發(fā)送回去沒有設(shè)置密保的標(biāo)識(shí),通知該用戶由于沒有設(shè)置密碼,通過此方法不能找回密碼。
- }
服務(wù)器的安全模塊各子模塊流程圖如下:
1、設(shè)置密保模塊
2、判斷是否設(shè)置密保模塊
3、判斷密保答案是否正確模塊
4、修改密保模塊
5、修改密碼模塊
6、找回密碼
本系列博文僅提供設(shè)計(jì)思路,及少量偽碼,詳細(xì)代碼:
http://down.51cto.com/data/353289
原文鏈接:http://blog.csdn.net/wangchangshuai0010/article/details/7372373
【編輯推薦】