国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Spring Boot 驗證碼框架 CAPTCHA詳解

Spring Boot 驗證碼框架 CAPTCHA詳解

2021-08-26 11:48Hansin1997 Java教程

這篇文章主要介紹了Spring Boot 驗證碼框架 CAPTCHA詳解,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

CAPTCHA

查看 Github 倉庫 | 查看 Gitee 倉庫

簡介

人機識別與驗證碼是后端開發中保護接口最常見的方式之一,而此類代碼往往會與業務代碼耦合帶來項目可維護性變差。

CAPTCHA是一個基于 Spring Boot 的驗證碼框架,它通過 AOP 的方式完成包含驗證碼生成、發送、存儲等驗證碼相關業務,以避免與業務代碼耦合。
開發者可以輕松地通過不同組件的組合來完成驗證業務,同時可以進行自定義實現以應對自身的業務需求(例如郵箱驗證碼、短信驗證碼)。

代碼示例

導入 Maven 依賴

  1. <dependency>
  2. <groupId>cn.dustlight.captcha</groupId>
  3. <artifactId>captcha-core</artifactId>
  4. <version>0.0.6</version>
  5. </dependency>

添加注解啟用 CAPTCHA

  1. @SpringBootApplication
  2. @EnableCaptcha // 啟用 CAPTCHA
  3. public class DemoApplication {
  4. public static void main(String[] args) {
  5. SpringApplication.run(DemoApplication.class, args);
  6. }
  7. }

使用注解生產驗證碼

  1. @RequestMapping("/captcha")
  2. @SendCode // 生成隨機字符圖像驗證碼并發送
  3. public void captcha(@CodeValue String code) {
  4. // 在此處進行自定義的業務,驗證碼的生成、發送與儲存已由注解 '@SendCode' 完成。
  5. log.info(code);
  6. }

使用注解消費驗證碼(保護接口)

  1. @RequestMapping("/")
  2. @VerifyCode
  3. public String index(@CodeValue String code) {
  4. // 在此處進行自定義的業務,驗證碼的驗證以及銷毀已由注解 '@VerifyCode' 完成。
  5. return String.format("Hello World! (%s)", code);
  6. }

實現原理

CAPTCHA 基于面向切面編程(AOP)思想,將驗證碼業務劃分為兩個切面:

@SendCode

  1. 生成驗證碼
  2. 儲存驗證碼
  3. 發送驗證碼

@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

  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的文章就介紹到這了,更多相關Spring Boot 驗證碼框架內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://blog.csdn.net/weixin_48803392/article/details/114890427

延伸 · 閱讀

精彩推薦
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學習使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程xml與Java對象的轉換詳解

    xml與Java對象的轉換詳解

    這篇文章主要介紹了xml與Java對象的轉換詳解的相關資料,需要的朋友可以參考下...

    Java教程網2942020-09-17
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關于小米推送Java代碼,小編覺得內容挺不錯的,現在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩中求8032021-07-12
  • Java教程Java實現搶紅包功能

    Java實現搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經有好久沒有升過級了。升級完畢重啟之后,突然發現好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
  • Java教程Java BufferWriter寫文件寫不進去或缺失數據的解決

    Java BufferWriter寫文件寫不進去或缺失數據的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數據的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發現了對于集合操作轉換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關于Java8中S...

    阿杜7472021-02-04
主站蜘蛛池模板: 在线观看免费黄视频 | 午夜精品久久久久久久久 | 亚洲国产精品成人 | 久久精品亚洲精品国产欧美kt∨ | 宅男lu666噜噜噜在线观看 | 日韩亚洲在线 | 久久99精品国产麻豆婷婷 | 国产一级一级特黄女人精品毛片 | a级在线观看 | 一级毛片免费完整视频 | 国产成人一区二区三区在线观看 | 日韩在线播放一区 | 久久久精品456亚洲影院 | 国产视频一区二区视频 | 国产成人av在线 | 做视频免费观看网站 | 亚洲精品a在线观看 | 欧美啪啪一区二区 | 亚洲伦理| 热久久国产 | 激情一区二区 | 欧美日韩专区 | 在线播放一区二区三区 | 青青草国产精品 | 在线成人免费视频 | 久久国产精品免费一区二区三区 | 欧美日本韩国一区二区三区 | 亚洲成人一区二区三区 | 在线免费看黄 | 夜夜操av | 亚洲国产高清在线 | 亚洲精品久久久久999中文字幕 | 在线观看免费黄色小视频 | 精品自拍视频在线观看 | 午夜在线观看影院 | a天堂国产 | 亚洲午夜视频在线观看 | 日韩成人在线观看 | 成人免费不卡视频 | 久久99精品久久久久久久青青日本 | 亚洲精品视频网站在线观看 |