当前位置: 移动技术网 > IT编程>开发语言>Java > 一行代码实现验证码--Happy Captcha

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

2020年07月17日  | 移动技术网IT编程  | 我要评论

使用 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();                  //生成并输出验证码;
        }

实现效果如下:
在这里插入图片描述
如果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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网