首頁 > Java > java教程 > 如何在SpringBoot中使用kaptcha實作驗證碼

如何在SpringBoot中使用kaptcha實作驗證碼

王林
發布: 2023-05-11 22:55:14
轉載
1722 人瀏覽過

1.kaptcha相關介紹

Kaptcha是一個基於SimpleCaptcha的驗證碼開源專案。

2.整合方案

①pom.xml中設定依賴

1

2

3

4

5

6

<!-- 验证码-->

<dependency>

 <groupId>com.github.penggle</groupId>

 <artifactId>kaptcha</artifactId>

 <version>2.3.2</version>

</dependency>

登入後複製

②配置驗證碼Kaptcha相關設定

#

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

@Configuration

public class kaptchaConfig {

  @Bean(name="captchaProducer")

  public DefaultKaptcha getKaptchaBean(){

    DefaultKaptcha defaultKaptcha=new DefaultKaptcha();

    Properties properties=new Properties();

    properties.setProperty("kaptcha.border""yes");

    properties.setProperty("kaptcha.border.color""105,179,90");

    properties.setProperty("kaptcha.textproducer.font.color""blue");

    properties.setProperty("kaptcha.image.width""125");

    properties.setProperty("kaptcha.image.height""45");

    properties.setProperty("kaptcha.session.key""code");

    properties.setProperty("kaptcha.textproducer.char.length""4");

    properties.setProperty("kaptcha.textproducer.font.names""宋体,楷体,微软雅黑");

    Config config=new Config(properties);

    defaultKaptcha.setConfig(config);

    return defaultKaptcha;

  }

}

登入後複製

在resources下建立myKaptcher.xml檔案

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

  <bean id="captchaProducer" class="com.google.code.kaptcha.impl.DefaultKaptcha">

    <property name="config">

      <bean class="com.google.code.kaptcha.util.Config">

        <constructor-arg type="java.util.Properties">

          <props>

            <prop key = "kaptcha.border ">yes</prop>

            <prop key="kaptcha.border.color">105,179,90</prop>

            <prop key="kaptcha.textproducer.font.color">blue</prop>

            <prop key="kaptcha.image.width">100</prop>

            <prop key="kaptcha.image.height">50</prop>

            <prop key="kaptcha.textproducer.font.size">27</prop>

            <prop key="kaptcha.session.key">code</prop>

            <prop key="kaptcha.textproducer.char.length">4</prop>

            <prop key="kaptcha.textproducer.font.names">宋体,楷体,微软雅黑</prop>

            <prop key="kaptcha.textproducer.char.string">23456789ABCEFGHJKMNOPQRSTUVWXYZ</prop>

            <prop key="kaptcha.obscurificator.impl">com.google.code.kaptcha.impl.WaterRipple</prop>

            <prop key="kaptcha.noise.color">black</prop>

            <prop key="kaptcha.noise.impl">com.google.code.kaptcha.impl.NoNoise</prop>

            <!--<prop key="kaptcha.noise.impl">com.google.code.kaptcha.impl.DefaultNoise</prop>-->

            <prop key="kaptcha.background.clear.from">185,56,213</prop>

            <prop key="kaptcha.background.clear.to">white</prop>

            <prop key="kaptcha.textproducer.char.space">3</prop>

          </props>

        </constructor-arg>

      </bean>

    </property>

  </bean>

</beans>

登入後複製

然後在啟動類別Application中載入設定

1

2

3

4

5

6

7

8

9

10

11

12

@EnableTransactionManagement// 启动注解事务管理,等同于xml配置方式的 <tx:annotation-driven />

@SpringBootApplication

@EnableScheduling//启动注解定时任务

@MapperScan(basePackages = "com.shawn.mapper")

@ImportResource(locations={"classpath:mykaptcha.xml"})

public class Application extends SpringBootServletInitializer {

 

  public static void main(String[] args) throws Exception {

    SpringApplication.run(Application.class, args);

  }

 

}

登入後複製

兩種設定方式在springboot中均可;

③KaptchaController

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

@CommonsLog

@Controller

public class KaptchaController extends BaseController {

  @Autowired

  private Producer captchaProducer;

  @GetMapping("/getKaptchaImage")

  public void getKaptchaImage() throws Exception {

 

    response.setDateHeader("Expires", 0);

 

    // Set standard HTTP/1.1 no-cache headers.

    response.setHeader("Cache-Control""no-store, no-cache, must-revalidate");

    // Set IE extended HTTP/1.1 no-cache headers (use addHeader).

    response.addHeader("Cache-Control""post-check=0, pre-check=0");

    // Set standard HTTP/1.0 no-cache header.

    response.setHeader("Pragma""no-cache");

    // return a jpeg

    response.setContentType("image/jpeg");

    // create the text for the image

    String capText = captchaProducer.createText();

    // store the text in the session

    //request.getSession().setAttribute(Constants.KAPTCHA_SESSION_KEY, capText);

    //将验证码存到session

    session.setAttribute(Constants.KAPTCHA_SESSION_KEY, capText);

    log.info(capText);

    // create the image with the text

    BufferedImage bi = captchaProducer.createImage(capText);

    ServletOutputStream out = response.getOutputStream();

    // write the data out

    ImageIO.write(bi, "jpg", out);

    try {

      out.flush();

    } finally {

      out.close();

    }

  }

}

登入後複製

以上是如何在SpringBoot中使用kaptcha實作驗證碼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
java - springboot新手學習
來自於 1970-01-01 08:00:00
0
0
0
java - 新人用直接springmvc還是springboot
來自於 1970-01-01 08:00:00
0
0
0
java - springboot部署到tomcat url請求路徑問題
來自於 1970-01-01 08:00:00
0
0
0
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板