SpringBoot整合Kaptcha實現(xiàn)圖形驗證碼功能
引入依賴
首先引入Kaptcha的starter依賴
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>kaptcha-spring-boot-starter</artifactId>
<version>1.1.0</version>
</dependency>驗證碼配置類
/**
* 圖形驗證碼配置類
*/
@Configuration
@Slf4j
public class CaptchaConfig {
/**
* 驗證碼配置
* @return
*/
@Bean
@Qualifier("captchaProducer")
public DefaultKaptcha kaptcha() {
DefaultKaptcha kaptcha = new DefaultKaptcha();
Properties properties = new Properties();
//驗證碼個數(shù)
properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, "4");
//字體間隔
properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_CHAR_SPACE,"8");
//干擾實現(xiàn)類
properties.setProperty(Constants.KAPTCHA_NOISE_IMPL, "com.google.code.kaptcha.impl.NoNoise");
//圖片樣式
properties.setProperty(Constants.KAPTCHA_OBSCURIFICATOR_IMPL, "com.google.code.kaptcha.impl.WaterRipple");
//文字來源
properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_CHAR_STRING, "0123456789");
Config config = new Config(properties);
kaptcha.setConfig(config);
return kaptcha;
}
}controller
主要步驟如下:
- 1.生成驗證碼字符串
- 2.生成圖形形式驗證碼
- 3.輸出到客戶端
- 4.關(guān)閉流
@RestController
@RequestMapping("/user")
@Slf4j
public class UserController {
@Autowired
private Producer producer;
/**
* 生成圖形驗證碼
* 1.生成驗證碼字符串
* 2.生成圖形形式驗證碼
* 3.輸出到客戶端
* 4.關(guān)閉流
* @param request
* @param response
*/
@GetMapping("captcha")
public void getCaptcha(HttpServletRequest request, HttpServletResponse response){
//生成字符串驗證碼
String code= producer.createText();
//創(chuàng)建圖形驗證碼
BufferedImage image=producer.createImage(code);
try {
//寫到瀏覽器,向客戶端發(fā)送數(shù)據(jù)
ServletOutputStream outputStream=null;
//獲取輸出流
outputStream=response.getOutputStream();
ImageIO.write(image,"jpg",outputStream);
outputStream.flush();
outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}ServletOutputStream
作用:用戶向客戶端發(fā)送二進制數(shù)據(jù)。提供了字節(jié)數(shù)據(jù)寫入響應輸出流的方式,用于生成和發(fā)送動態(tài)內(nèi)容或者文件的響應。
應用場景:
- 向客戶端發(fā)送圖像、音頻或者視頻媒體文件。
- 生成發(fā)送PDF、EXCEL等等二進制文件。
- 將二進制數(shù)據(jù)流式傳遞給客戶端。
使用步驟:
- 通過HttpservletRespon獲取輸出流getOutputStream。
- 通過ImageIO.write將圖像寫入到輸出流中。
- 緩沖輸出流。
- 關(guān)閉輸出流。
效果

寫在最后
以上就是SpringBoot整合Kaptcha實現(xiàn)圖形驗證碼功能的詳細內(nèi)容,更多關(guān)于SpringBoot整合Kaptcha驗證碼的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
java.lang.NoSuchMethodException: com.sun.proxy.$Proxy58.list
這篇文章主要介紹了java.lang.NoSuchMethodException: com.sun.proxy.$Proxy58.list錯誤解決辦法的相關(guān)資料,需要的朋友可以參考下2016-12-12
RxJava的消息發(fā)送和線程切換實現(xiàn)原理
這篇文章主要介紹了RxJava的消息發(fā)送和線程切換實現(xiàn)原理,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-11-11
Spring AOP結(jié)合注解實現(xiàn)接口層操作日志記錄
在項目開發(fā)中我們需要記錄接口的操作日志:包含請求參數(shù)、響應參數(shù)、接口所屬模塊、接口功能描述、請求地址、ip地址等信息;實現(xiàn)思路很簡單就是基于注解和aop的方式去記錄日志,主要的難點在于日志表結(jié)構(gòu)、注解的設計已經(jīng)aop實現(xiàn)的一些比較好的實現(xiàn)方式的借鑒2022-08-08
Java的Comparable,Comparator和Cloneable三大接口詳解
這篇文章主要為大家詳細介紹了Java的Comparable,Comparator和Cloneable的接口,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03
IDEA中SpringBoot項目數(shù)據(jù)庫連接加密方法
這篇文章主要介紹了IDEA中SpringBoot項目數(shù)據(jù)庫連接加密方法,文章通過圖文結(jié)合的方式給大家介紹的非常詳細,對大家的學習或工作有一定的幫助,需要的朋友可以參考下2024-06-06

