SpringBoot整合Kaptcha實(shí)現(xiàn)圖形驗(yàn)證碼功能
引入依賴
首先引入Kaptcha的starter依賴
<dependency> <groupId>com.baomidou</groupId> <artifactId>kaptcha-spring-boot-starter</artifactId> <version>1.1.0</version> </dependency>
驗(yàn)證碼配置類
/** * 圖形驗(yàn)證碼配置類 */ @Configuration @Slf4j public class CaptchaConfig { /** * 驗(yàn)證碼配置 * @return */ @Bean @Qualifier("captchaProducer") public DefaultKaptcha kaptcha() { DefaultKaptcha kaptcha = new DefaultKaptcha(); Properties properties = new Properties(); //驗(yàn)證碼個(gè)數(shù) properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, "4"); //字體間隔 properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_CHAR_SPACE,"8"); //干擾實(shí)現(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.生成驗(yàn)證碼字符串
- 2.生成圖形形式驗(yàn)證碼
- 3.輸出到客戶端
- 4.關(guān)閉流
@RestController @RequestMapping("/user") @Slf4j public class UserController { @Autowired private Producer producer; /** * 生成圖形驗(yàn)證碼 * 1.生成驗(yàn)證碼字符串 * 2.生成圖形形式驗(yàn)證碼 * 3.輸出到客戶端 * 4.關(guān)閉流 * @param request * @param response */ @GetMapping("captcha") public void getCaptcha(HttpServletRequest request, HttpServletResponse response){ //生成字符串驗(yàn)證碼 String code= producer.createText(); //創(chuàng)建圖形驗(yàn)證碼 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ā)送二進(jìn)制數(shù)據(jù)。提供了字節(jié)數(shù)據(jù)寫入響應(yīng)輸出流的方式,用于生成和發(fā)送動(dòng)態(tài)內(nèi)容或者文件的響應(yīng)。
應(yīng)用場(chǎng)景:
- 向客戶端發(fā)送圖像、音頻或者視頻媒體文件。
- 生成發(fā)送PDF、EXCEL等等二進(jìn)制文件。
- 將二進(jìn)制數(shù)據(jù)流式傳遞給客戶端。
使用步驟:
- 通過HttpservletRespon獲取輸出流getOutputStream。
- 通過ImageIO.write將圖像寫入到輸出流中。
- 緩沖輸出流。
- 關(guān)閉輸出流。
效果
寫在最后
以上就是SpringBoot整合Kaptcha實(shí)現(xiàn)圖形驗(yàn)證碼功能的詳細(xì)內(nèi)容,更多關(guān)于SpringBoot整合Kaptcha驗(yàn)證碼的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Spring Boot + Vue 前后端分離開發(fā)之前端網(wǎng)絡(luò)請(qǐng)求封裝與配置
這篇文章主要介紹了Spring Boot + Vue 前后端分離開發(fā)之前端網(wǎng)絡(luò)請(qǐng)求封裝與配置方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-05-05Mybatis之解決collection一對(duì)多問題(顯示的結(jié)果沒有整合到一起)
這篇文章主要介紹了Mybatis之解決collection一對(duì)多問題(顯示的結(jié)果沒有整合到一起),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03SpringBoot中多環(huán)境配置和@Profile注解示例詳解
這篇文章主要介紹了SpringBoot中多環(huán)境配置和@Profile注解,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-01-01mybatis的xml中使用@符號(hào)調(diào)用類方法示例
這篇文章主要為大家介紹了mybatis的xml中使用@符號(hào)調(diào)用類方法示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12Mybatis-plus插入數(shù)據(jù)遇到主鍵沒有默認(rèn)值的情況
這篇文章主要介紹了Mybatis-plus插入數(shù)據(jù)遇到主鍵沒有默認(rèn)值的情況,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11Java中List的contains()方法的使用小結(jié)
List?的?contains()?方法用于檢查列表中是否包含指定的元素,借助equals()方法進(jìn)行判斷,下面就來介紹Java中List的contains()方法的使用小結(jié),感興趣的可以了解一下2025-04-04關(guān)于Mybatis的mapper接口函數(shù)重載問題
這篇文章主要介紹了關(guān)于Mybatis的mapper接口函數(shù)重載問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-02-02