码云推荐 | Java 动画验证码 EasyCaptcha

EasyCaptcha

JavaWeb图形验证码,支持gif验证码,可用于基于的sessionweb项目和前后端分离的项目。

效果展示

码云推荐 | Java 动画验证码 EasyCaptcha 刷新页面可以重新生成验证码图片。   

导入项目

gradle方式的引入

需要先在project的build.gradle中添加:

allprojects {
    repositories {
        maven { url 'https://jitpack.io' }
    }
}

在项目的build.gradle中添加

dependencies {
    compile 'com.github.whvcse:EasyCaptcha:1.1.0'
}

maven方式引入

<repositories>
    <repository>
    <id>jitpack.io</id>
    <url>https://jitpack.io</url>
    </repository>
</repositories>

<dependencies>
   <dependency>
      <groupId>com.github.whvcse</groupId>
      <artifactId>EasyCaptcha</artifactId>
      <version>1.1.0</version>
   </dependency>
</dependencies>

jar包下载

EasyCaptcha-1.1.0.jar

使用方法

快速使用

1.在web.xml里面加入如下配置

<!-- 图形验证码 -->
<servlet>
    <servlet-name>CaptchaServlet</servlet-name>
    <servlet-class>com.wf.captcha.servlet.CaptchaServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>CaptchaServlet</servlet-name>
    <url-pattern>/images/captcha</url-pattern>
</servlet-mapping>

2.前端代码

<img src="/images/captcha" />

SpringMVC 中使用

如果你不想使用项目提供的servlet,可以使用controller的形式实现,方法也很简单,代码如下:

@RequestMapping("/images/captcha")
public void captcha(HttpServletRequest request, HttpServletResponse response) {
    CaptchaUtil captcha = new CaptchaUtil();
    try {
        captcha.out(request, response);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

前端代码:

<img src="/images/captcha" />

前后端分离中使用

验证码一般都是保存在session中的,但是在前后端分离的项目中,不推荐使用session存储,可使用如下方式:

@RequestMapping("/images/captcha")
public void captcha(String key, HttpServletRequest request, HttpServletResponse response) {
    CaptchaUtil captcha = new CaptchaUtil();
    try {
        captcha.out(key, request, response);
    } catch (IOException e) {
        e.printStackTrace();
    }
}

与前面的使用区别就在于多了一个key,使用的时候需要前端生成一个随机key传递过来,服务器是已这个key为名字存储在servletContext中的,取的时候需要根据这个key取值。

前后端分离也同样可以使用框架自带的servlet,使用方式如下:

<img src="/images/captcha?key=xxx" />
<!-- 此处的key应该有js随机生成,并且js在验证的时候也需要传递这个key -->

判断验证码是否正确

基于session存储的判断:

CaptchaUtil captcha = new CaptchaUtil();
if (captcha == null || !captcha.ver(code, request)) {
    return JsonResult.error("验证码不正确");
}

前后端分离方式的判断:

CaptchaUtil captcha = new CaptchaUtil();
if (captcha == null || !captcha.ver(key, code, request)) {
    return JsonResult.error("验证码不正确");
}
//此处的key便是生成的时候传递的key

参数设置

设置宽高和位数

//三个参数分别是宽、高、位数
CaptchaUtil captcha = new CaptchaUtil(130, 38, 5);

修改存储时候的key

CaptchaUtil captcha = new CaptchaUtil();
captcha.setCodeName("captcha");

默认存在session中是以captcha为key存储的,存储在servletContext中是以captcha-xxx为key存储的,xxx是生成的时候前端传递的key。

原文 

https://gitee.com/whvse/EasyCaptcha

本站部分文章源于互联网,本着传播知识、有益学习和研究的目的进行的转载,为网友免费提供。如有著作权人或出版方提出异议,本站将立即删除。如果您对文章转载有任何疑问请告之我们,以便我们及时纠正。

PS:推荐一个微信公众号: askHarries 或者qq群:474807195,里面会分享一些资深架构师录制的视频录像:有Spring,MyBatis,Netty源码分析,高并发、高性能、分布式、微服务架构的原理,JVM性能优化这些成为架构师必备的知识体系。还能领取免费的学习资源,目前受益良多

转载请注明原文出处:Harries Blog™ » 码云推荐 | Java 动画验证码 EasyCaptcha

赞 (0)
分享到:更多 ()

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址