springboot+kaptcha生成数学运算验证码和字符验证码

该博客介绍了如何在SpringBoot项目中集成Kaptcha库,以生成数学运算和字符类型的验证码。通过添加依赖、编写自定义的验证码文本生成器、配置文件以及控制器层的实现,实现了验证码的完整流程。只需将示例代码中的文本生成器路径替换为自己的实际路径即可。
摘要由CSDN通过智能技术生成

使用以下代码只需要复制粘贴,修改一处文本生成器路径即可,文中有交代。

  1. 添加kaptcha依赖

    <dependency>
        <groupId>com.github.penggle</groupId>
        <artifactId>kaptcha</artifactId>
        <version>2.3.2</version>
    </dependency>
    
  2. 编写验证码文本生成器,为了给数据运算验证码用的

    创建KaptchaTextCreator验证码文本生成器类

    package com.liu.springsecurity.config;
    import com.google.code.kaptcha.text.impl.DefaultTextCreator;
    
    import java.security.SecureRandom;
    import java.util.Random;
    
    /**
     * 验证码文本生成器
     *
     * @author shw
     */
    public class KaptchaTextCreator extends DefaultTextCreator {
         
        private static final String[] CNUMBERS = "0,1,2,3,4,5,6,7,8,9,10".split(",");
    
        @Override
        public String getText(){
         
            Integer result = 0;
            Random random = new SecureRandom();
            int x = random.nextInt(10);
            int y = random.nextInt(10);
            StringBuilder suChinese = new StringBuilder();
            int randomoperands = (int) Math.round(Math.random() * 2);
            if (randomoperands == 0)
            {
         
                result = x * y;
                suChinese.append(CNUMBERS[x]);
                suChinese.append("*");
                suChinese.append(CNUMBERS[y]);
            }
            else if (randomoperands == 1)
            {
         
                if (!(x == 0) && y % x == 0)
                {
         
                    result = y / x;
                    suChinese.append(CNUMBERS[y]);
                    suChinese.append("/");
                    suChinese.append(CNUMBERS[x]);
                }
                else
                {
         
                    result = x + y;
                    suChinese.append(CNUMBERS[x]);
                    suChinese.append("+");
                    suChinese.append(CNUMBERS[y]);
                }
            }
            else if (randomoperands == 2)
            {
         
                if (x >= y)
                {
         
                    result = x - y;
                    suChinese.append(CNUMBERS[x]
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值