00-1010验证码,可以说是现在互联网上刚需的。只要有登录,就会有验证码。当然还有各种验证码,静态的,动态的。静态的分为图片、汉字、算术等,动态的分为gif、滑块、点击汉字等。下面小编介绍两个验证码,必要的时候可以收集,这样可以节省你的开发时间。
导语
快乐验证码遵循Apache 2.0开源许可协议,可以自由使用软件。它提供了图片和动画两种显示形式,可以根据自己的需要来实现。
Maven访问,只是引入maven依赖。属国
groupIdcom.ramostear/groupId
artifactIdHappy-验证码/artifactId
版本1 . 0 . 1/版本
/dependency生成验证码以下是最基本的用法,其中request和response是必需参数,其他参数是可选的。这种情况下,生成的验证码是图片,内容是09-azA-Z字符的随机组合,长度为5,图片宽度为160,高度为50,字体为微软雅赫。
@控制器
公共类HappyCaptchaController {
@GetMapping(‘/captcha ‘)
public void happyCaptcha(HttpServletrequest请求,HttpServletResponse响应){ 0
HappyCaptcha.require(请求、响应)。构建()。finish();
}
}验证码的第三个参数表示是否忽略案例,true表示忽略,false表示验证案例。
@控制器
公共类CaptchaController{
@PostMapping(‘/verify ‘)
公共字符串验证(字符串代码,HttpServletRequest请求){ 0
//验证码验证
布尔标志=HappyCaptcha.verification(请求,代码,true);
if(标志){ 0
//其他操作.
}
}
}清理验证码。使用验证码后,可以根据需要手动清理。清理也很简单,只需要一行代码。
@控制器
公共类HappyCaptchaController {
@ GetMapping(“/remove/captcha”)
public void removeCaptcha(HttpServletrequest请求){ 0
HappyCaptcha.remove(请求);
}
}高级功能HappyCaptcha有几个高级功能:样式、类型、长度、宽度、高度、字体。
Style:有两个值,CaptchaStyle。ANIM和队长风格。IMG,前者生成动态验证码,后者生成静态图片。只需添加样式(验证码样式。ANIM)到生成验证码的代码。类型有以下可选值,只需添加类型(验证码类型。WORD)
引自ramostear
3.长度、宽度、高度的介绍都差不多,对应的长度(XXX)、宽度(XXXX)、高度(XX)等。被添加到代码中,所以我不会详细介绍它们。
4.字体的引入需要字体(font。getinstance()。zhfont())。有四种类型。
注意:这些功能可以用链式调用。
显示效果
引自ramostear
ps://p6.toutiaoimg.com/origin/pgc-image/d07f15f5c67e46ea90b6987bfdea7b04?from=pc”>
EasyCaptcha
图形验证码,支持中文,算数,gif等
maven引入 <dependency>
<groupId>com.github.whvcse</groupId>
<artifactId>easy-captcha</artifactId>
<version>1.6.2</version>
</dependency>生成验证码@Controller
public class CaptchaController {
@RequestMapping(“/captcha”)
public void captcha(HttpServletRequest request, HttpServletResponse response) throws Exception {
CaptchaUtil.out(request, response);
}
}校验验证码@Controller
public class LoginController {
@PostMapping(“/login”)
public JsonResult login(String username,String password,String verCode){
if (!CaptchaUtil.ver(verCode, request)) { //校验
CaptchaUtil.clear(request); // 清除session中的验证码
// other….
}
}
}自定义验证码样式// 设置位数
CaptchaUtil.out(5, request, response);
// 设置宽、高、位数
CaptchaUtil.out(130, 48, 5, request, response);
验证码类型// png类型
SpecCaptcha captcha = new SpecCaptcha(130, 48);
// gif类型
GifCaptcha captcha = new GifCaptcha(130, 48);
// 中文类型
ChineseCaptcha captcha = new ChineseCaptcha(130, 48);
// 中文gif类型
ChineseGifCaptcha captcha = new ChineseGifCaptcha(130, 48);
// 算术类型
ArithmeticCaptcha captcha = new ArithmeticCaptcha(130, 48);前后端分离中使用样例@Controller
public class CaptchaController {
@Autowired
private RedisUtil redisUtil;
@ResponseBody
@RequestMapping(“/captcha”)
public JsonResult captcha(HttpServletRequest request, HttpServletResponse response) throws Exception {
SpecCaptcha specCaptcha = new SpecCaptcha(130, 48, 5);
String verCode = specCaptcha.text().toLowerCase();
String key = UUID.randomUUID().toString();
// 存入redis并设置过期时间为30分钟
redisUtil.setEx(key, verCode, 30, TimeUnit.MINUTES);
// 将key和base64返回给前端
return JsonResult.ok().put(“key”, key).put(“image”, specCaptcha.toBase64());
}
@ResponseBody
@PostMapping(“/login”)
public JsonResult login(String username,String password,String verCode,String verKey){
// 获取redis中的验证码
String redisCode = redisUtil.get(verKey);
// 判断验证码
if (verCode==null || !redisCode.equals(verCode.trim().toLowerCase())) {
return JsonResult.error(“验证码不正确”);
}
}
}效果展示
对比
这两款验证码相比各自有优缺点,第一款验证码比较丰富,但是前后端分离项目中,不好使用,没有类似redis这种存储;第二款验证码适合前后端分离,相对前者丰富性差点。不过一般的基本上能用。
总结
由于篇幅有限,今天就简单的介绍到这里了。喜欢的小伙伴点个关注+评论+赞哦。私信【验证码】 小编,获得源码地址。
快三邀请码稳赚计划tcha(130, 48);
// 中文gif类型
ChineseGifCaptcha captcha = new ChineseGifCaptcha(130, 48);
// 算术类型
ArithmeticCaptcha captcha = new ArithmeticCaptcha(130, 48);前后端分离中使用样例@Controller
public class CaptchaController {
@Autowired
private RedisUtil redisUtil;
@ResponseBody
@RequestMapping(“/captcha”)
public JsonResult captcha(HttpServletRequest request, HttpServletResponse response) throws Exception {
SpecCaptcha specCaptcha = new SpecCaptcha(130, 48, 5);
String verCode = specCaptcha.text().toLowerCase();
String key = UUID.randomUUID().toString();
// 存入redis并设置过期时间为30分钟
redisUtil.setEx(key, verCode, 30, TimeUnit.MINUTES);
// 将key和base64返回给前端
return JsonResult.ok().put(“key”, key).put(“image”, specCaptcha.toBase64());
}
@ResponseBody
@PostMapping(“/login”)
public JsonResult login(String username,String password,String verCode,String verKey){
// 获取redis中的验证码
String redisCode = redisUtil.get(verKey);
// 判断验证码
if (verCode==null || !redisCode.equals(verCode.trim().toLowerCase())) {
return JsonResult.error(“验证码不正确”);
}
}
}效果展示
对比
这两款验证码相比各自有优缺点,第一款验证码比较丰富,但是前后端分离项目中,不好使用,没有类似redis这种存储;第二款验证码适合前后端分离,相对前者丰富性差点。不过一般的基本上能用。
总结
由于篇幅有限,今天就简单的介绍到这里了。喜欢的小伙伴点个关注+评论+赞哦。私信【验证码】 小编,获得源码地址。