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