闲着没事,去码云找找一些有趣的开源项目,发现一个Java图形验证码项目,
地址如下:
https://gitee.com/whvse/EasyCaptcha;(点击文末的了解更多直接进入)
这个项目可以用在web网站的开发,比如登录的时候需要用户输入验证码,他这个项目直接给你封装好了,拿来就可以直接使用。
EasyCaptcha
1.简介
Java图形验证码,支持gif、中文、算术等类型,可用于Java Web、JavaSE等项目。
2.效果展示
![5a67e4ac04da6cacbd860157dbc7bd24.png](https://i-blog.csdnimg.cn/blog_migrate/659471f40922befb61cc4da441a802f2.jpeg)
6.前后端分离项目的使用
前后端分离项目建议不要存储在session中,存储在redis中,redis存储需要一个key,key一同返回给前端用于验证输入:
@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("验证码不正确");
}
}
}
还有一些讲解,大家可以自己去看看。