Happy Captcha 正在参加 2020 年度 OSC 中国开源项目评选,请投票支持!
Happy Captcha 在 2020 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
投票让它出道
已投票
Happy Captcha 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」 !
Happy Captcha 获得 2020 年度 OSC 中国开源项目评选「最佳人气项目」「最积极运营项目」 !
Happy Captcha 获得 2020 年度 OSC 中国开源项目评选「最积极运营项目」 !
授权协议 Apache
开发语言 Java
操作系统 跨平台
软件类型 开源软件
开源组织
地区 国产
投 递 者 树下魅狐
适用人群 未知
收录时间 2020-05-18

软件简介

Happy Captcha是一款易于使用的Java验证码软件包,旨在花最短的时间,最少的代码量,实现Web站点的验证码功能。Happy Captcha完全遵循Apache 2.0开源许可协议,你可以自由使用该软件,如您在使用Happy Captcha时发现软件的任何缺陷,欢迎随时与我联系。

Happy Capthca的源代码已托管到Github和Gitee,你可以访问下面的链接获取更多信息:

如果你想快速体验Happy Captcha的功能,可通过下列方式获取Happy-Captcha依赖:

Maven

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

Gradle

implementation 'com.ramostear:Happy-Captcha:1.0.1'

一、展示

Happy Captcha提供了图片和动画两种展现形式,验证码内容包括中文(收录3500个常用汉字),阿拉伯数字(0~9),中文数字(零至九),中文大写数字(零至玖),数字与字母混合(0~9-a~z-A~Z),数字与小写字母混合(0~9-a~z),数字与大写字母混合(0~9-A~Z),纯小写字母,纯大写字母,大小写字母混合以及运算表达式(阿拉伯数字运算表达式和中文运算表达式)等12种类型。

CaptchaType IMAGE ANIMATION
CHINESE
NUMBER
NUMBER_ZH_CN
NUMBER_ZH_HK
DEFAULT
WORD
WORD_LOWER
WORD_UPPER
WORD_NUMBER_LOWER
WORD_NUMBER_UPPER
ARITHMETIC
ARITHMETIC_ZH

二、安装

如果你的项目使用的是Maven进行依赖管理,你只需向pom.xml文件添加下面的配置即可:

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

Gradle用户则可以通过引入如下的配置获取Happy Captcha:

implementation 'com.ramostear:Happy-Captcha:1.0.1'

三、使用

HappyCaptcha在设计时力求过程的简洁,在默认情况下,你只需要书写一行代码即可生成漂亮的验证码图片。下面是HappyCaptcha的使用示例:

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

对于HappyCaptcha而言,只有request和response是必须提供的参数,其余参数都可以使用缺省值。

在默认情况下,HappyCaptcha生成的验证码以图片形式展现,内容为0~9-a~z-A~Z的字符随机组合,字符长度为5,图片宽度为160,高度为50,字体为微软雅黑。

四、校验

用户输入的验证码校验是一个必不可少的环节,HappyCaptcha内置了对用户输入的验证码校验功能。下面是验证码校验示例:

@Controller
public class CaptchaController{

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

如果在校验过程中需要忽略字母大小写,第三个参数设置为true,如果需要强校验,则设置为false。

五、清理

当验证码被使用后,你可以通过HappyCaptcha类种的remove()方法将Session中存放的验证码清理掉。下面是清理验证码的代码示例:

@Controller
public class HappyCaptchaController{

    @GetMapping("/remove/captcha")
    public void removeCaptcha(HttpServletRequest request){
         HappyCaptcha.remove(request);   
    }
}

除HappyCaptcha提供的默认方法,你也可以在需要操作的地方,手动清理Session中存放的验证码,HappyCaptcha验证码的Key为“happy-captcha”。

六、高级特性

通过前面的内容,我们已经了解到如何快熟的安装并使用HappyCaptcha生成验证码。在接下的内容当中,将介绍HappyCaptcha更详细的内容。

6.1 style()

HappyCaptcha提供两种验证码展现形式:图片和动画。默认的展现形式为图片,可以通过style()方法修改默认值。style()方法的值由CaptchaStyle类提供,可供选择的值有IMG和ANIM。style()使用示例如下:

HappyCaptcha.require(request,response)
            .style(CaptchaStyle.ANIM)
            .build().finish();

若展现形式为图片,则style(CaptchaStyle.IMG)可以省略。

6.2 type()

HappyCaptcha一共提供了12种验证码类型,你可以自由选择其中的一种类型作为验证码的内容形式。默认情况下,验证码使用数字和大小写字母的混合形式。验证码类型值由CaptchaType类提供,内容如下表:

说明
DEFAULT 数字、大小写字母随机组合
ARITHMETIC 加、减、乘算数运算表达式
ARITHMETIC_ZH 中文简体加、减、乘算数运算表达式描述
CHINESE 常见汉字(3500个)随机组合
NUMBER 0~9数字随机组合
NUMBER_ZH_CN 中文数字(零至九)随机组合
NUMBER_ZH_HK 中文繁体数字(零至玖)随机组合
WORD 大小写字母随机组合
WORD_LOWER 小写字母随机组合
WORD_UPPER 大写字母随机组合
WORD_NUMBER_LOWER 数字、小写字母随机组合
WORD_NUMBER_UPPER 数字、大写字母随机组合

type()使用示例如下:

HappyCaptcha.require(request,response)
            .type(CaptchaType.CHINESE)
            .build().finish();

6.3 length()

length()方法用于设置验证码字符长度,默认情况下缺省值为5。你可以通过以下方式对验证码字符长度进行控制:

HappyCaptcha.require(request,response)
            .length(6)
            .build().finish();

6.4 width()

width()方法可对验证码图片的宽度进行调节,默认的缺省值为160。使用方式如下:

HappyCaptcha.require(request,response)
            .width(180)
            .build().finish();

6.5 height()

同width()方法一样,height()方法用于设置验证码图片的高度,默认缺省值为50。使用方式如下:

HappyCaptcha.require(request,response)
            .height(60)
            .build().finish();

6.6 font()

如果你想改变验证码的字体,可通过font()方法进行设置,默认缺省字体为微软雅黑。HappyCaptcha内置了四种字体,可以通过Fonts类进行调用。

HappyCaptcha.require(request,response)
            .font(Fonts.getInstance().zhFont())
            .build().finish();

6.7 链式调用

上面介绍了如何修改单个配置,HappyCaptcha支持链式调用,可同时对验证码的多个属性进行设置。例如:

@GetMapping("/captcha")
public void captcha(HttpServletRequest req,HttpServletResponse res){
    HappyCaptcha.require(req,res)
                .style(CaptchaStyle.ANIM)            //设置展现样式为动画
                .type(CaptchaType.CHINESE)            //设置验证码内容为汉字
                .length(6)                            //设置字符长度为6
                .width(220)                            //设置动画宽度为220
                .height(80)                            //设置动画高度为80
                .font(Fonts.getInstance().zhFont())    //设置汉字的字体
                .build().finish();                  //生成并输出验证码
}

若验证码的类型为ARITHMETIC或ARITHMETIC_ZH,可省略验证码长度的设置。算术运算表达式的长度为5。

展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论 (7)

加载中
前后端分离的项目,好像没办法使用
2020/07/13 11:41
回复
举报
能不能来个不依赖request对象的实现
2020/07/13 11:39
回复
举报
好东西,有空试试
2020/06/30 16:54
回复
举报
都滑动了
2020/05/22 17:25
回复
举报
树下魅狐软件作者
是的,都滑动了,就像现在都5G了,但不代表4G就直接扔掉了
2020/05/23 20:47
回复
举报
很方便 点赞
2020/05/22 17:23
回复
举报
树下魅狐软件作者
谢谢关注
2020/05/23 20:47
回复
举报
更多评论
暂无内容
发表了博客
2013/03/16 10:12

验证码CAPTCHA

Captcha http://baike.baidu.com/view/538168.htm EXIF http://baike.baidu.com/view/22006.htm

0
0
发表了博客
2014/07/15 09:49

happy

终于打开了心中的郁结,心情也变得好了很多,以后只关注技术,创业和生活。

0
0
发表了博客
2014/05/19 20:33

Happy WS 之 控制台 -- Happy Console (一)

> Webit Script 是啥? ==》http://www.oschina.net/p/webit-script OK 先上效果: 场景:控制台 ============================================ Wellcome Webit Script World \(^o^)/ QQ群:302505483 ============================================ <<< echo "Hello WS!"; >>> Hello WS! <<< var a="A", var b="b"; echo a+b; >>> 应该是语法错了: Syntax error before: 1(15). Hints: 'IDENTIFIER' <<< var a="A", b="b"; e...

2
2
发表了博客
2014/06/02 14:03

Happy WS 之 控制台 -- Happy Console (二)

支持多行增加了几个函数,看结果吧 0. 多行模式: 任意数量的> 开始 同等数量的< 结束 1. 文件系统函数 cd ls dir 2. 执行执行模版函数 exec(tmpl) 3. 错误行定位 4. 错误信息默认不显示详情, 使用 showLastException() 函数显示错误详情 5. 变量/常量导入全局变量/常量 ============================================     Wellcome Webit Script World  \(^o^)/                    build:2014....

2
2
发表了博客
2019/02/14 12:44

CAPTCHA--验证码

验证码开发有两种方法: 1.自己用代码画一个 2.调用ValidateCode.jar工具包 第一种方式: 创建一个动态web工程 编写一个Servlet,在该Servlet内进行如下操作 验证码开发步骤: 1.在内存中创建一个图片对象 1 int width = 110; 2 int height = 25; 3 // 在内存中创建一个图片对象 4 BufferedImage img = new BufferedImage(width, height, 5 BufferedImage.TYPE_IN...

0
0
发表了博客
2019/10/31 15:35

Laravel - 验证码(captcha)

首先,登录网址 packagist.org 查找 laravel captcha,找到mews/captcha ,根据 packagist 上的使用方法一步步来实现验证码的安装。配置composer.json文件 composer 安装:composer require mews/captcha 注册providers (config/app.php) ,在这个数组中的最后追加如下代码: Mews\Captcha\CaptchaServiceProvider::class, 注册aliases (config/app.php),在这个数组中的最后追加如下代码:(laravel 5 以后不用注册) 'Cap...

0
0
发表了博客
2019/07/28 13:24

django验证码captcha

官方文档 https://django-simple-captcha.readthedocs.io/en/latest/usage.html#installation 使用命令安装pip install django-simple-captcha==0.4.6 (==后面是版本号) 安装好之后添加到 settings.py中 把 url(r'^captcha/', include('captcha.urls')),添加到项目的urls.py中,如下图 Run python manage.py migrate 如下图 执行命令 makemigrations 然后再执行 migrate 进行数据表迁移 到这里没有报错说明captcha验证码组件已经...

0
0
发表了博客
2012/10/19 12:12

How to make everyone is happy

How to make everyone is happy HowMake everybody happy Peter's uncle livedthe countries.Once Peter and his wentstay weeks.When they go out for a walk or the house cars and they passed the someone, his uncle w 英语快速阅读方法aved.Peter was surprised and said, "uncle George, you know everybody here. Where did you meet them?" "I don't know these people," said his uncle. "That you why wavethem?"Ask...

0
0
发表了博客
2012/05/08 09:34

CAPTCHA技术服务

CAPTCHA:Completely Automated Public Turing test to tell Computers and Humans Apart.

0
0
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
暂无内容
7 评论
37 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部