欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring boot如何集成kaptcha并生成驗(yàn)證碼

 更新時(shí)間:2020年07月20日 16:11:38   作者:慕塵  
這篇文章主要介紹了Spring boot如何集成kaptcha并生成驗(yàn)證碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

kaptcha是一個(gè)開(kāi)源的驗(yàn)證碼實(shí)現(xiàn)庫(kù)

1.添加依賴

<dependency>
  <groupId>com.github.axet</groupId>
  <artifactId>kaptcha</artifactId>
  <version>0.0.9</version>
</dependency>

2.添加配置類

配置驗(yàn)證碼的生成屬性

package com.dream.road.config;

import com.google.code.kaptcha.impl.DefaultKaptcha;
import com.google.code.kaptcha.util.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.util.Properties;

@Configuration
public class KaptchaConfig {
  @Bean
  public DefaultKaptcha producer() {
    Properties properties = new Properties();
    // 設(shè)置邊框
    properties.put("kaptcha.border", "yes");
    // 設(shè)置邊框顏色
    properties.put("kaptcha.border.color", "105,179,90");
    // 設(shè)置字體顏色
    properties.put("kaptcha.textproducer.font.color", "black");
    // 設(shè)置圖片寬度
    properties.put("kaptcha.image.width", "160");
    // 設(shè)置圖片高度
    properties.put("kaptcha.image.height", "50");
    //設(shè)置字體尺寸
    properties.put("kaptcha.textproducer.font.size", "30");
    // 設(shè)置驗(yàn)證碼長(zhǎng)度
    properties.put("kaptcha.textproducer.char.length", "5");
    // 設(shè)置字體
    properties.put("kaptcha.textproducer.font.names", "宋體,楷體,黑體");

    Config config = new Config(properties);
    DefaultKaptcha defaultKaptcha = new DefaultKaptcha();
    defaultKaptcha.setConfig(config);
    return defaultKaptcha;
  }
}

復(fù)制代碼

參數(shù):

  •   kaptcha.border:圖片邊框,值:yes , no
  •   kaptcha.border.color:邊框顏色,值: r,g,b (and optional alpha) 或者 white,black,blue
  •   kaptcha.image.width:圖片寬
  •   kaptcha.image.height:圖片高
  •   kaptcha.textproducer.char.length:驗(yàn)證碼長(zhǎng)度
  •   kaptcha.textproducer.font.names:字體
  •   kaptcha.textproducer.font.size:字體大小
  •   kaptcha.textproducer.font.color:字體顏色
  •   kaptcha.textproducer.char.space:文字間隔
  •   kaptcha.background.clear.from:背景顏色漸變,開(kāi)始顏色
  •   kaptcha.background.clear.to:背景顏色漸變,結(jié)束顏色

3.生成驗(yàn)證碼api

package com.dream.road.controller;

import com.google.code.kaptcha.Constants;
import com.google.code.kaptcha.Producer;
import org.apache.tomcat.util.http.fileupload.IOUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.IOException;

@RestController
public class LoginController {

  @Autowired
  private Producer producer;

  @GetMapping("captcha.jpg")
  public void captcha(HttpServletResponse response, HttpServletRequest request) throws ServletException, IOException {
    response.setHeader("Cache-Control", "no-store, no-cache");
    response.setContentType("image/jpeg");

    // 生成文字驗(yàn)證碼
    String text = producer.createText();
    // 生成圖片驗(yàn)證碼
    BufferedImage image = producer.createImage(text);
    // 保存到驗(yàn)證碼到 session
    request.getSession().setAttribute(Constants.KAPTCHA_SESSION_KEY, text);

    ServletOutputStream out = response.getOutputStream();
    ImageIO.write(image, "jpg", out);
    IOUtils.closeQuietly(out);
  }

}

4.測(cè)試

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Spring Security中successHandler無(wú)效問(wèn)題及解決

    Spring Security中successHandler無(wú)效問(wèn)題及解決

    這篇文章主要介紹了Spring Security中successHandler無(wú)效問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • springboot整合@Retryable實(shí)現(xiàn)重試功能的示例代碼

    springboot整合@Retryable實(shí)現(xiàn)重試功能的示例代碼

    本文主要介紹了springboot整合@Retryable實(shí)現(xiàn)重試功能的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Java獲取代碼中方法參數(shù)名信息的方法

    Java獲取代碼中方法參數(shù)名信息的方法

    在java中,可以通過(guò)反射獲取到類、字段、方法簽名等相關(guān)的信息,像方法名、返回值類型、參數(shù)類型、泛型類型參數(shù)等,但是不能夠獲取方法的參數(shù)名。在實(shí)際開(kāi)發(fā)場(chǎng)景中,有時(shí)需要根據(jù)方法的參數(shù)名做一些操作,那么該如何操作了呢?下面就通過(guò)這篇文章來(lái)學(xué)習(xí)學(xué)習(xí)吧。
    2016-09-09
  • MyBatis 如何簡(jiǎn)化的 JDBC(思路詳解)

    MyBatis 如何簡(jiǎn)化的 JDBC(思路詳解)

    MyBatis 是一個(gè) 持久層 框架,用于 簡(jiǎn)化JDBC開(kāi)發(fā),這篇文章主要介紹了MyBatis 如何簡(jiǎn)化的 JDBC(思路詳解),需要的朋友可以參考下
    2023-03-03
  • hadoop的hdfs文件操作實(shí)現(xiàn)上傳文件到hdfs

    hadoop的hdfs文件操作實(shí)現(xiàn)上傳文件到hdfs

    這篇文章主要介紹了使用hadoop的API對(duì)HDFS上的文件訪問(wèn),其中包括上傳文件到HDFS上、從HDFS上下載文件和刪除HDFS上的文件,需要的朋友可以參考下
    2014-03-03
  • 快速掌握J(rèn)ava8中的Optional

    快速掌握J(rèn)ava8中的Optional

    Optional 是一個(gè)容器類,代表一個(gè)值存在或不存在,Optional并不是用來(lái)替換所有的null,而是為了在設(shè)計(jì)良好的API中更明確地表達(dá)可能缺失的值,這篇文章主要介紹了Java8的Optional及使用,需要的朋友可以參考下
    2023-07-07
  • Java?@Transactional指定回滾條件

    Java?@Transactional指定回滾條件

    這篇文章主要介紹了Java?@Transactional指定回滾條件,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-08-08
  • Java多線程ThreadPoolExecutor詳解

    Java多線程ThreadPoolExecutor詳解

    這篇文章主要介紹了Java多線程ThreadPoolExecutor詳解,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • SpringBoot Web詳解靜態(tài)資源規(guī)則與定制化處理

    SpringBoot Web詳解靜態(tài)資源規(guī)則與定制化處理

    這篇文章主要介紹了SpringBoot web場(chǎng)景的靜態(tài)資源規(guī)則與定制化,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-06-06
  • Java實(shí)現(xiàn)特定范圍的完數(shù)輸出算法示例

    Java實(shí)現(xiàn)特定范圍的完數(shù)輸出算法示例

    這篇文章主要介紹了Java實(shí)現(xiàn)特定范圍的完數(shù)輸出算法,簡(jiǎn)單說(shuō)明了完數(shù)的概念、計(jì)算原理并結(jié)合實(shí)例形式分析了java針對(duì)給定范圍內(nèi)的完數(shù)輸出操作實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-12-12

最新評(píng)論