欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

一行代码实现验证码--Happy Captcha

程序员文章站 2022-10-03 16:30:55
使用 Happy Captcha,一行代码生成验证码。这里做一个整理和记录:引入jar包: com.ramostear Happy-Captcha 1.0.1开始使用,只需一行代码就可以生成验证码:@Control...

使用 Happy Captcha,一行代码生成验证码。

这里做一个整理和记录:
引入jar包:

<dependency>
  <groupId>com.ramostear</groupId>
  <artifactId>Happy-Captcha</artifactId>
  <version>1.0.1</version>
</dependency>

开始使用,只需一行代码就可以生成验证码:

@Controller
public class HappyCaptchaController{
    @GetMapping("/captcha")
    public void happyCaptcha(HttpServletRequest reqeust,HttpServletResponse response){
        HappyCaptcha.require(request,response).build().finish();
    }
}

这里还可以使用链式编程,对验证码的一些属性进行设置:

public void happyCaptcha(HttpServletRequest reqeust, HttpServletResponse response){
            HappyCaptcha.require(reqeust,response)
                    .style(CaptchaStyle.IMG)            //设置展现样式为图片
                    .length(4)                            //设置字符长度为4
                    .width(220)                            //设置动画宽度为220
                    .height(80)                            //设置动画高度为80
                    .build().finish();                  //生成并输出验证码;
        }

实现效果如下:
一行代码实现验证码--Happy Captcha
如果CaptchaStyle设置为CaptchaStyle.ANIM,生成的验证码还会有动画效果。


打开finish方法的源码。我们可以看到生成的验证码是放在session中了:

 captcha.setLength(this.length);
                captcha.setFont(this.font);
                this.setHeader(this.response);
                this.request.getSession().setAttribute("happy-captcha", captcha.getCaptchaCode());
                captcha.render(this.response.getOutputStream());
                return true;```

所以,使用过的验证码要从session中清除, Happy Captcha提供了这样的方法来实现:

 public void removeCaptcha(HttpServletRequest request){
            HappyCaptcha.remove(request);
        }

最后就是对于验证码的校验:

public String verify(String code,HttpServletRequest request){
            //Verification Captcha
            boolean flag = HappyCaptcha.verification(request,code,true);
            if(flag){
                //Other operations...
            }
            return code;
        }

打开verification方法的源码,我们可以看到:

if (code != null && !code.trim().equals("")) {
            String captcha = (String)request.getSession().getAttribute("happy-captcha");
            return ignoreCase ? code.equalsIgnoreCase(captcha) : code.equals(captcha);
        } else {
            return false;
        }

就是从session中取出刚才存入的验证码,然后与输入的验证码code进行对比。

本文地址:https://blog.csdn.net/a816120/article/details/107358555

相关标签: 自己总结 java