午夜剧场伦理_日本一道高清_国产又黄又硬_91黄色网战_女同久久另类69精品国产_妹妹的朋友在线

您的位置:首頁技術(shù)文章
文章詳情頁

Spring Boot 驗(yàn)證碼框架 CAPTCHA詳解

瀏覽:14日期:2023-07-19 11:00:52
CAPTCHA

查看 Github 倉庫 | 查看 Gitee 倉庫

簡(jiǎn)介

人機(jī)識(shí)別與驗(yàn)證碼是后端開發(fā)中保護(hù)接口最常見的方式之一,而此類代碼往往會(huì)與業(yè)務(wù)代碼耦合帶來項(xiàng)目可維護(hù)性變差。

CAPTCHA 是一個(gè)基于 Spring Boot 的驗(yàn)證碼框架,它通過 AOP 的方式完成包含驗(yàn)證碼生成、發(fā)送、存儲(chǔ)等驗(yàn)證碼相關(guān)業(yè)務(wù),以避免與業(yè)務(wù)代碼耦合。開發(fā)者可以輕松地通過不同組件的組合來完成驗(yàn)證業(yè)務(wù),同時(shí)可以進(jìn)行自定義實(shí)現(xiàn)以應(yīng)對(duì)自身的業(yè)務(wù)需求(例如郵箱驗(yàn)證碼、短信驗(yàn)證碼)。

代碼示例

導(dǎo)入 Maven 依賴

<dependency> <groupId>cn.dustlight.captcha</groupId> <artifactId>captcha-core</artifactId> <version>0.0.6</version></dependency>

添加注解啟用 CAPTCHA

@SpringBootApplication@EnableCaptcha // 啟用 CAPTCHApublic class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); }}

使用注解生產(chǎn)驗(yàn)證碼

@RequestMapping('/captcha') @SendCode // 生成隨機(jī)字符圖像驗(yàn)證碼并發(fā)送 public void captcha(@CodeValue String code) { // 在此處進(jìn)行自定義的業(yè)務(wù),驗(yàn)證碼的生成、發(fā)送與儲(chǔ)存已由注解 ’@SendCode’ 完成。 log.info(code); }

使用注解消費(fèi)驗(yàn)證碼(保護(hù)接口)

@RequestMapping('/') @VerifyCode public String index(@CodeValue String code) { // 在此處進(jìn)行自定義的業(yè)務(wù),驗(yàn)證碼的驗(yàn)證以及銷毀已由注解 ’@VerifyCode’ 完成。 return String.format('Hello World! (%s)', code); }實(shí)現(xiàn)原理

CAPTCHA 基于面向切面編程(AOP)思想,將驗(yàn)證碼業(yè)務(wù)劃分為兩個(gè)切面:

@SendCode

生成驗(yàn)證碼 儲(chǔ)存驗(yàn)證碼 發(fā)送驗(yàn)證碼

@VerifyCode

讀取驗(yàn)證碼 進(jìn)行驗(yàn)證

同時(shí)將驗(yàn)證碼業(yè)務(wù)抽象為下面幾個(gè)接口:

Code—— 驗(yàn)證碼 CodeGenerator—— 生成器 CodeSender—— 發(fā)送器 CodeStore—— 儲(chǔ)存器 CodeVerifier—— 驗(yàn)證器

例子

隨機(jī)字符圖像驗(yàn)證碼的 AOP 實(shí)現(xiàn)

業(yè)務(wù)分析

客戶端訪問驗(yàn)證碼接口獲取到圖像,同時(shí)后端服務(wù)將生成的驗(yàn)證碼儲(chǔ)存在 Session 或者 Redis。 客戶端訪問接口(登錄、注冊(cè)等),傳入?yún)?shù)以及驗(yàn)證碼,后端服務(wù)取出驗(yàn)證碼進(jìn)行校驗(yàn)。

模塊劃分

業(yè)務(wù)邏輯

@SendCode

通過 CodeGenerator生成 Code。 通過 CodeStore儲(chǔ)存 Code。 通過 CodeSender輸出 Code。 執(zhí)行業(yè)務(wù)代碼。

@VerifyCode

從請(qǐng)求參數(shù)獲取待驗(yàn)證的驗(yàn)證碼。 通過 CodeStore取出 Code。 通過 CodeVerify進(jìn)行驗(yàn)證。 驗(yàn)證完成則執(zhí)行業(yè)務(wù)代碼,否則拋出異常。拓展與組合

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

例如,想要使用 Redis 儲(chǔ)存驗(yàn)證碼只需要通過 RedisTemplate實(shí)現(xiàn) CodeStore即可,再通過模塊的組合使用可以輕易地完成自定義的驗(yàn)證碼業(yè)務(wù),同時(shí)又不影響業(yè)務(wù)代碼。

到此這篇關(guān)于Spring Boot 驗(yàn)證碼框架 - CAPTCHA的文章就介紹到這了,更多相關(guān)Spring Boot 驗(yàn)證碼框架內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!

標(biāo)簽: Spring
相關(guān)文章:
主站蜘蛛池模板: 亚洲春色在线 | 91麻豆成人精品国产 | 亚洲一区二区美女 | 久久久夜色精品亚洲 | 天天爽爽 | 欧美一区二区视频在线观看 | 亚洲经典av | 91亚洲国产精品 | 色呦呦影院 | 99久久精品国产一区二区成人 | 天天做夜夜操 | 国产成人8x视频一区二区 | 九九福利| 超碰九九 | 老地方在线观看免费动漫 | 亚洲精品亚洲人成人网 | 日日干日日插 | 国产51页 | 久久久久久蜜桃 | 国产激情视频在线播放 | 色婷婷丁香 | 99久久99久久精品国产片果冻 | 亚洲国产欧美视频 | 久热在线 | www,黄色 | 成年人免费在线观看视频网站 | 四虎国产| 毛片毛片毛片毛片毛片毛片毛片 | 国产精品美女久久久久久久久 | 一道本在线播放 | 日韩精品一区二区三区在线观看 | 亚洲第一网址 | 欧美日一区二区 | 免费观看国产精品 | 免费高清欧美大片在线观看 | 国产内射毛片 | 久久久久久久久久久久国产精品 | 91麻豆精品91久久久久同性 | 精品国产999| 青青操在线播放 | 91一区二区 |