手机验证码接收软件(接别人手机验证码软件)-冯金伟博客园

验证码

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”>

引自ramostear

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(“验证码不正确”);
}
}
}效果展示

引自synchronized

引自synchronized

对比

这两款验证码相比各自有优缺点,第一款验证码比较丰富,但是前后端分离项目中,不好使用,没有类似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(“验证码不正确”);
}
}
}效果展示

引自synchronized

引自synchronized

对比

这两款验证码相比各自有优缺点,第一款验证码比较丰富,但是前后端分离项目中,不好使用,没有类似redis这种存储;第二款验证码适合前后端分离,相对前者丰富性差点。不过一般的基本上能用。

总结

由于篇幅有限,今天就简单的介绍到这里了。喜欢的小伙伴点个关注+评论+赞哦。私信【验证码】 小编,获得源码地址。