1:簡單的帳戶註冊服務程序員
註冊互聯網帳戶是平常生活中再熟悉不過的一件事,做爲一個用戶,註冊帳戶的時候須要進行如下操做,提供如下信息。安全
- 提供一個未被使用的賬號ID
- 提供一個未被使用的email地址、
- 提供一個任意的顯示名稱
- 設置安全密碼,並重復輸入以確認
- 輸入驗證碼
- 前往郵箱查收激活連接並單擊激活賬號
- 登陸確認激活狀態
賬號的ID和密碼惟一的標識某個帳戶,顯示名稱用來在頁面上顯示,方便瀏覽。註冊時須要用戶輸入兩次密碼,以確保沒有輸錯。系統則負責檢查ID和email的惟一性,驗證兩次輸入的密碼是否一致。驗證碼由系統隨機生成,只能由肉眼識別,能夠有效防止機器的惡意批量註冊,若輸入正確的驗證碼信息,系統會進行檢查,若是驗證碼錯誤,會提示錯誤並返回新的驗證碼。一旦全部檢查經過,系統會生成一個激活連接,併發送到用戶的郵箱中,單擊激活連接後,帳戶就被激活了,這時註冊完成,用戶能夠直接登陸。服務器
除此以外,還應該考慮一些安全因素。例如:須要在服務器端密文地保存密碼,檢查密碼的強弱程度,更進一步則須要考慮驗證碼的失效時間,激活連接的失效時間。併發
本文不會涉及太多Maven的知識,可是後續的文章都會在這篇文章的基礎上對Maven作進一步的闡述和實踐。學習
2:帳戶註冊服務需求用例設計
註冊帳戶對象
主要場景blog
- 用戶訪問註冊頁面
- 系統生成驗證碼
- 用戶輸入註冊信息:ID,Email地址,名稱,密碼,確認密碼
- 用戶輸入驗證碼
- 系統檢查驗證碼
- 用戶提交註冊請求
- 系統檢查ID,Email的惟一性,密碼,確認密碼是否一致
- 系統保存未激活的帳戶信息
- 系統生成註冊激活連接,發送至用戶郵箱
- 用戶打開郵箱,點擊激活連接
- 系統解析激活連接,激活帳戶
- 用戶使用ID和密碼登陸
擴展場景接口
- 驗證碼模糊,用戶沒法看清,請求從新生成
- 跳轉到步驟2
- 系統檢測到驗證碼輸入錯誤
- 系統提示驗證碼錯誤
- 跳轉到步驟2
- 系統檢測到註冊信息有誤:ID已被佔用,Email已被註冊,密碼和確認密碼不一致
- 系統提示相關信息
- 跳轉到步驟2
用例場景分析圖片
該註冊帳戶用例包含了一個主要場景和幾個擴展場景。用例角色只有兩個:用戶 、系統。主要場景描述了用戶如何與系統一步一步地交互,而且成功完成註冊,是一個正常的註冊流程。而擴展場景則描述了正常流程中的異常。
該用例沒有涉及非功能性需求(如安全性),也沒有詳細定義的用戶界面,用例也不會告訴咱們使用什麼技術,關於安全性,你將會見解哦一些實際措施,不過於深刻,關於用戶界面,將會給出原型圖,技術上就使用Spring。
3:界面原型(圖片來自於Maven實戰)
4:簡要設計
系統對外的接口包括生成驗證碼圖片,處理註冊請求,激活帳戶以及處理登陸等。
解釋說明:
generateCaptchaKey():生成驗證碼所需的Key
generateCaptchaImage(captchaKet: String):依據生成的Key生成驗證碼圖片,驗證碼以及驗證碼的圖片被傳送到客戶端,用戶經過肉眼識別再輸入驗證碼的值,隨着Key在傳送到服務端驗證。服務端作對比。
signUpRequst包含了註冊用戶所須要的信息,包括ID、email、顯示名稱、密碼、確認密碼等伴隨captchaKey的captchaValue構成一個註冊請求。
signUp():方法接收SignUpRequest對象,進行驗證。
activate():方法接收一個激活碼,查找對應的帳戶進行激活。
login():方法用來進行登陸
5:模塊結構
定義了系統核心的接口以後,基於功能分割和方便複用的原則,再對系統進一步進行劃分。這裏基於包名來劃分模塊。
不少有經驗的程序員不須要多少設計就能快速完成這樣的一個功能,不過咱們是爲了學習Maven,微小的項目中見證大道理。大道至簡嘛。因此咱們須要一個像模像樣的。有不少模塊的系統來演示Maven不少很是酷的特性。
帳戶註冊服務模塊劃分圖:
6:小結
至目前爲止,咱們已經瞭解了用戶註冊服務的需求,大概的界面,簡單的接口設計以及模塊的職責劃分。這將會直接應用到後面Maven的實戰中,這個簡單的帳戶註冊服務也會一步步地實現和完善,從而體現Maven的實際功效。