91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Spring Boot驗證碼框架CAPTCHA有什么用

發布時間:2021-03-22 10:52:24 來源:億速云 閱讀:340 作者:小新 欄目:開發技術

這篇文章主要介紹Spring Boot驗證碼框架CAPTCHA有什么用,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

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

  1. 生成驗證碼

  2. 儲存驗證碼

  3. 發送驗證碼

@VerifyCode

  • 讀取驗證碼

  • 進行驗證

同時將驗證碼業務抽象為下面幾個接口:

  • Code—— 驗證碼

  • CodeGenerator—— 生成器

  • CodeSender—— 發送器

  • CodeStore—— 儲存器

  • CodeVerifier—— 驗證器

例子

隨機字符圖像驗證碼的 AOP 實現

業務分析

  •  客戶端訪問驗證碼接口獲取到圖像,同時后端服務將生成的驗證碼儲存在 Session 或者 Redis

  • 客戶端訪問接口(登錄、注冊等),傳入參數以及驗證碼,后端服務取出驗證碼進行校驗。

模塊劃分

接口實現功能/描述
CodeCode<String>字符串型 Code ,內有驗證碼名、驗證碼值。(驗證碼名用于區分不同業務的驗證碼)
CodeGeneratorRandomStringCodeGenerator隨機字符串生成,通過參數配置字符池以及長度。
CodeSenderImageCodeSender繪制圖像(隨機字符、干擾線),輸出到 Response。
CodeStoreHttpSessionCodeStore基于 Session 對驗證碼進行儲存與取出。
CodeVerifierStringEqualsCodeVerifier字符串比較驗證,通過參數配置是否大小寫敏感以及是否 trim 。

業務邏輯

@SendCode

  1. 通過 CodeGenerator生成 Code

  2. 通過 CodeStore儲存 Code

  3. 通過 CodeSender輸出 Code

  4. 執行業務代碼。

@VerifyCode

  1. 從請求參數獲取待驗證的驗證碼。

  2. 通過 CodeStore取出 Code

  3. 通過 CodeVerify進行驗證。

  4. 驗證完成則執行業務代碼,否則拋出異常。

拓展與組合

除了圖像驗證碼(人機識別)以外,常見的驗證碼業務或者人機識別業務例如:短信驗證碼、郵箱驗證碼、谷歌 reCAPTCHA 人機識別等都可以通過實現上述接口來完成業務。

例如,想要使用 Redis 儲存驗證碼只需要通過 RedisTemplate實現 CodeStore即可,再通過模塊的組合使用可以輕易地完成自定義的驗證碼業務,同時又不影響業務代碼。

以上是“Spring Boot驗證碼框架CAPTCHA有什么用”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

西丰县| 白沙| 张北县| 湘阴县| 临洮县| 门头沟区| 区。| 博白县| 宜丰县| 青州市| 永吉县| 金沙县| 阜南县| 伊宁市| 和平县| 辽源市| 荣昌县| 革吉县| 肥东县| 雷波县| 开远市| 通州区| 靖安县| 南平市| 肥西县| 加查县| 玉溪市| 壤塘县| 河源市| 获嘉县| 田东县| 内乡县| 庆元县| 普洱| 北流市| 桂阳县| 黑河市| 克什克腾旗| 东乌| 开阳县| 永康市|