美文网首页
图形验证码

图形验证码

作者: CoderZS | 来源:发表于2019-07-11 16:11 被阅读0次

    图形验证码

    验证码功能位于 cn.hutool.captcha 包中,核心接口为 ICaptcha,此接口定义了以下方法:

    createCode: 创建验证码,实现类需同时生成随机验证码字符串和验证码图片
    getCode: 获取验证码的文字内容
    verify: 验证验证码是否正确,建议忽略大小写
    write: 将验证码写出到目标流中

    其中 write 方法只有一个 OutputStream,ICaptcha 实现类可以根据这个方法封装写出到文件等方法。

    AbstractCaptcha 为一个 ICaptcha 抽象实现类,此类实现了验证码文本生成、非大小写敏感的验证、写出到流和文件等方法,通过继承此抽象类只需实现 createImage 方法定义图形生成规则即可。

    实现类

    LineCaptcha 线段干扰的验证码

    生成效果大致如下:

    图片.png
    代码
    //定义图形验证码的长和宽
    LineCaptcha lineCaptcha = CaptchaUtil.createLineCaptcha(200, 100);
    
    //图形验证码写出,可以写出到文件,也可以写出到流
    lineCaptcha.write("d:/line.png");
    //输出code
    Console.log(lineCaptcha.getCode());
    //验证图形验证码的有效性,返回boolean值
    lineCaptcha.verify("1234");
    
    //重新生成验证码
    lineCaptcha.createCode();
    lineCaptcha.write("d:/line.png");
    //新的验证码
    Console.log(lineCaptcha.getCode());
    //验证图形验证码的有效性,返回boolean值
    lineCaptcha.verify("1234");
    

    CircleCaptcha 圆圈干扰验证码

    图片.png
    CircleCaptcha captcha = CaptchaUtil.createCircleCaptcha(200, 100, 4, 20);
    //CircleCaptcha captcha = new CircleCaptcha(200, 100, 4, 20);
    //图形验证码写出,可以写出到文件,也可以写出到流
    captcha.write("d:/circle.png");
    //验证图形验证码的有效性,返回boolean值
    captcha.verify("1234");
    

    ShearCaptcha 扭曲干扰验证码

    图片.png
    //定义图形验证码的长、宽、验证码字符数、干扰线宽度
    ShearCaptcha captcha = CaptchaUtil.createShearCaptcha(200, 100, 4, 4);
    //ShearCaptcha captcha = new ShearCaptcha(200, 100, 4, 4);
    //图形验证码写出,可以写出到文件,也可以写出到流
    captcha.write("d:/shear.png");
    //验证图形验证码的有效性,返回boolean值
    captcha.verify("1234");
    

    写出到浏览器(Servlet输出)

    ICaptcha captcha = ...;
    captcha.write(response.getOutputStream());
    //Servlet的OutputStream记得自行关闭哦!
    

    相关文章

      网友评论

          本文标题:图形验证码

          本文链接:https://www.haomeiwen.com/subject/aqydkctx.html