1. 程式人生 > >圖片驗證碼的需求分析、優雅實現

圖片驗證碼的需求分析、優雅實現

需求描述

通常我們最登入的時候,為了防止多次嘗試或攻擊登入介面,我們需要弄一個驗證碼的功能,只有輸入驗證碼正確的情況下,我們才會去做密碼校驗,這樣就減少了密碼可能會被試出來的可能。

需求分析

這個功能設計要點有兩個:

第一點、驗證碼圖片的生成

驗證碼圖片的生成使用到io流,網上很多生成驗證碼的工具,比如說使用awt的Graphics2D 生成的。但如果要調整驗證碼的個數、樣式等那就有點麻煩了。這裡給大家介紹一個驗證碼開源元件com.google.code.kaptcha。可以靈活調整驗證碼的樣式。

第二點、驗證碼的儲存方式

如果只是一個單體專案,可以存在session當中,如果集成了shiro,也可以放shiro的session中。

而在分散式系統當中,需要考慮驗證碼的共享功能。

1、可以儲存在session中,如需要整合spring session,把session存到redis等儲存中介軟體中session驗證碼共享功能。

2、shiro集成了redis的,就可以存在shiro session當中實現共享。

3、當然,你也可以直接把驗證碼存到redis等中介軟體中,不需要通過session,但是key就必須唯一。

虛擬碼邏輯

1、引入com.google.code.kaptcha的pom座標

2、生成驗證碼的配置資訊,配置樣式等

3、呼叫producer介面生成驗證碼和圖片,並儲存到session中

4、使用servlet輸出流把驗證碼圖片

5、傳到客戶端校驗驗證碼

建議:可以定義一個驗證碼開關,開發時候可以關閉驗證碼功能,提高效率。

程式碼實現

第一步、匯入驗證碼元件pom包

第二步、生成驗證碼配置

第三步、生成驗證碼圖片,把驗證碼存到session中

第四步、校驗驗證碼是否正確

至此,驗證碼功能實現完畢~~

(完)

(Java碼客)

專注於解析開源專案,

功能需求分析,虛擬碼邏輯,程式碼實現等~~