您好,登錄后才能下訂單哦!
這篇文章主要介紹Spring Boot驗證碼框架CAPTCHA有什么用,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
人機識別與驗證碼是后端開發中保護接口最常見的方式之一,而此類代碼往往會與業務代碼耦合帶來項目可維護性變差。
CAPTCHA 是一個基于 Spring Boot 的驗證碼框架,它通過 AOP 的方式完成包含驗證碼生成、發送、存儲等驗證碼相關業務,以避免與業務代碼耦合。
開發者可以輕松地通過不同組件的組合來完成驗證業務,同時可以進行自定義實現以應對自身的業務需求(例如郵箱驗證碼、短信驗證碼)。
導入 Maven 依賴
<dependency> <groupId>cn.dustlight.captcha</groupId> <artifactId>captcha-core</artifactId> <version>0.0.6</version> </dependency>
添加注解啟用 CAPTCHA
@SpringBootApplication @EnableCaptcha // 啟用 CAPTCHA public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } }
使用注解生產驗證碼
@RequestMapping("/captcha") @SendCode // 生成隨機字符圖像驗證碼并發送 public void captcha(@CodeValue String code) { // 在此處進行自定義的業務,驗證碼的生成、發送與儲存已由注解 '@SendCode' 完成。 log.info(code); }
使用注解消費驗證碼(保護接口)
@RequestMapping("/") @VerifyCode public String index(@CodeValue String code) { // 在此處進行自定義的業務,驗證碼的驗證以及銷毀已由注解 '@VerifyCode' 完成。 return String.format("Hello World! (%s)", code); }
CAPTCHA 基于面向切面編程(AOP)思想,將驗證碼業務劃分為兩個切面:
@SendCode
生成驗證碼
儲存驗證碼
發送驗證碼
@VerifyCode
讀取驗證碼
進行驗證
同時將驗證碼業務抽象為下面幾個接口:
Code
—— 驗證碼
CodeGenerator
—— 生成器
CodeSender
—— 發送器
CodeStore
—— 儲存器
CodeVerifier
—— 驗證器
例子
隨機字符圖像驗證碼的 AOP 實現
業務分析
客戶端訪問驗證碼接口獲取到圖像,同時后端服務將生成的驗證碼儲存在 Session 或者 Redis。
客戶端訪問接口(登錄、注冊等),傳入參數以及驗證碼,后端服務取出驗證碼進行校驗。
模塊劃分
接口 | 實現 | 功能/描述 |
---|---|---|
Code | Code<String> | 字符串型 Code ,內有驗證碼名、驗證碼值。(驗證碼名用于區分不同業務的驗證碼) |
CodeGenerator | RandomStringCodeGenerator | 隨機字符串生成,通過參數配置字符池以及長度。 |
CodeSender | ImageCodeSender | 繪制圖像(隨機字符、干擾線),輸出到 Response。 |
CodeStore | HttpSessionCodeStore | 基于 Session 對驗證碼進行儲存與取出。 |
CodeVerifier | StringEqualsCodeVerifier | 字符串比較驗證,通過參數配置是否大小寫敏感以及是否 trim 。 |
業務邏輯
@SendCode
通過 CodeGenerator
生成 Code
。
通過 CodeStore
儲存 Code
。
通過 CodeSender
輸出 Code
。
執行業務代碼。
@VerifyCode
從請求參數獲取待驗證的驗證碼。
通過 CodeStore
取出 Code
。
通過 CodeVerify
進行驗證。
驗證完成則執行業務代碼,否則拋出異常。
除了圖像驗證碼(人機識別)以外,常見的驗證碼業務或者人機識別業務例如:短信驗證碼、郵箱驗證碼、谷歌 reCAPTCHA 人機識別等都可以通過實現上述接口來完成業務。
例如,想要使用 Redis 儲存驗證碼只需要通過 RedisTemplate
實現 CodeStore
即可,再通過模塊的組合使用可以輕易地完成自定義的驗證碼業務,同時又不影響業務代碼。
以上是“Spring Boot驗證碼框架CAPTCHA有什么用”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。