关于SpringBoot如何生成验证码的简单介绍---Kaptcha

关于Kaptcha?
kaptcha 是一个验证码生成工具,并且可以自定义配置验证码的样式,如果不自定义也可以使用其默认配置,非常方便。
使用步骤:
1.导入maven依赖

  <dependency>
        <groupId>com.github.axet</groupId>
        <artifactId>kaptcha</artifactId>
        <version>0.0.9</version>
    </dependency>
    
    <dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-web</artifactId>
       <version>2.5.2</version>
    </dependency>

2.将Kaptcha注册到ioc容器中

@Configuration
public class KaptchaConfig {
   @Bean
    public DefaultKaptcha defaultKaptcha(){
       DefaultKaptcha kaptcha=new DefaultKaptcha();
       Properties properties=new Properties();
       properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_FONT_NAMES,"微软雅黑");
       properties.setProperty(Constants.KAPTCHA_BORDER,"yes");
       properties.setProperty(Constants.KAPTCHA_TEXTPRODUCER_CHAR_LENGTH,"5");
       Config config=new Config(properties);
       kaptcha.setConfig(config);
       return kaptcha;
   }
}

注意: 以上代码使用了自定义配置,即:使用Properties对象自定义了一些属性,从而达到自定义验证码样式的效果。当然,如果不自定义属性,想用其默认配置,那么将只需要将上述代码换成以下即可:DefaultKaptcha kaptcha =new DefaultKaptcha();kaptcha.setConfig(new Config(new Properties)); return kaptcha;

3.写一个controller类

@Controller
public class getKaptchaCode {
    @Autowired
    private DefaultKaptcha kaptcha;
    @RequestMapping("/getCode")
    public void createCode(HttpServletRequest request, HttpServletResponse response) throws IOException {
       //创建验证码字符串
        String code = kaptcha.createText();
        //将验证码存入session中
        request.getSession().setAttribute("kaptchaCode",code);
        //将验证码字符串转化成图片
        BufferedImage image = kaptcha.createImage(code);
        ServletOutputStream outputStream = response.getOutputStream();
        //使用IO将图片返回给浏览器
        ImageIO.write(image,"jpg",outputStream);
        //关闭流,节约资源
        outputStream.close();
    }
    
    //接收浏览器端发送的验证码,和session中的验证码做对比---作登录校验
    @RequestMapping("/testCode")
    @ResponseBody
    public String testCode(String code,HttpServletRequest request){
        System.out.println("验证码是:"+code);
         String kaptchaCode= (String) request.getSession().getAttribute("kaptchaCode");
         if(code!=null&&code.equals(kaptchaCode)){
             return "Login success";
         }
        return "Login again please";
    }
}

4.测试
1.发起请求:http://localhost:8080/getCode
结果:
在这里插入图片描述
2.发起请求:http://localhost:8080/testCode?code=83fm7
浏览器输出:Login success

Over!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值