功能:java实现滑动验证码

项目是采用springboot,maven

开发工具:采用idea

1.效果演示:

2.后端代码:

控制层:

@Controller
public class SliderCodeController {@AutowiredResourceLoader resourceLoader;@Autowiredprivate FileUtil fileUtil;// 设置横轴位置缓存public static Cache< String, Integer > cacheg = CacheBuilder.newBuilder().expireAfterWrite(60, TimeUnit.SECONDS).maximumSize(666666).build();@GetMapping@RequestMapping("index")public String test(HttpServletRequest request, Model model) throws IOException {return "index";}@GetMapping@RequestMapping("getImg")public @ResponseBodyMap< String, Object > getPic(HttpServletRequest request) throws IOException {try {File targetFile = fileUtil.getFile("target");File tempImgFile = fileUtil.getFile("temp");Map < String, Object > resultMap = VerifyImageUtil.pictureTemplatesCut(tempImgFile, targetFile);// 生成流水号,这里就使用时间戳代替String lno = Calendar.getInstance().getTimeInMillis() + "";cacheg.put(lno, Integer.valueOf(resultMap.get("xWidth") + ""));resultMap.put("capcode", lno);// 移除横坐标送前端resultMap.remove("xWidth");return resultMap;}catch (Exception e) {e.printStackTrace();return null;}}@GetMapping@RequestMapping("checkImgCode")public @ResponseBody Map < String, Object > checkcapcode(@RequestParam("xpos") int xpos,@RequestParam("capcode") String capcode, HttpServletRequest request) throws IOException {Map < String, Object > result = new HashMap< String, Object >();Integer x = cacheg.getIfPresent(capcode);if (x == null) {// 超时result.put("code", 3);}else if (xpos - x > 5 || xpos - x < -5) {// 验证失败result.put("code", 2);}else {// 验证成功result.put("code", 1);}return result;}
}

工具类:

@Component
public class FileUtil {@Value("${file.path}")private String filePath;@Value("${file.target.path}")private String targetFilePath;@Value("${file.target.num}")private Integer targetfileNum;@Value("${file.temp.path}")private String tempFilePath;@Value("${file.temp.num}")private Integer tempfileNum;public File getFile(String type){int num = 0;String imgType = ".jpg";String oldFilePath = "";if(type.equals("target")){num = new Random().nextInt(targetfileNum)  + 1;oldFilePath = targetFilePath;} else  if(type.equals("temp")){num = new Random().nextInt(tempfileNum)  + 1;imgType = "-w.png";oldFilePath = tempFilePath;}String path = filePath;String fileImg =   num + imgType;String filePath = path + fileImg;File pathFile = new File(path);if(!pathFile.exists()){pathFile.mkdirs();}File file = new File(filePath);if(!file.exists()){try {file.createNewFile();ClassPathResource classPathResource = new ClassPathResource(oldFilePath + fileImg);InputStream inputStream = classPathResource.getInputStream();if(inputStream.available() != 0){FileUtils.copyInputStreamToFile(inputStream, file);}inputStream.close();} catch (IOException e) {e.printStackTrace();}}return file;}}

3.前端页面:

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>滑动验证码</title>
<link rel="stylesheet" href="/css/slide.css">
<script src="/js/jquery-1.11.1.min.js"></script>
<script src="/js/jquery.lgyslide.js"></script>
</head>
<body><div id="imgscode"></div><script>$(function() {setTimeout(function() {createcode();}, 1000)}());//显示验证码function createcode() {$.ajax({type : 'POST',url : '/getImg',dataType : 'json',success : function(data) {if (data != null) {$("#imgscode").imgcode({frontimg : 'data:image/png;base64,'+ data.slidingImage,backimg : 'data:image/png;base64,'+ data.backImage,yHeight : data.yHeight,refreshcallback : function() {//刷新验证码createcode();},callback : function(msg) {console.log(msg);var $this = this;$.ajax({type : 'POST',url : '/checkImgCode',data : {xpos : msg.xpos,capcode : data.capcode},dataType : 'json',success : function(data) {console.log(data)if (data.code == 1) {$this.getsuccess();} else {if (data.code == 4) {createcode();} else if (data.code == 3) {$this.getfail("验证码过期,请刷新");} else {$this.getfail("验证不通过");}}}})}});}}})}</script>
</body>
</html>

4.代码demo下载:

​https://download.csdn.net/download/weixin_39220472/58708246​

java实现滑动验证码相关推荐

  1. Java图片滑动验证码

    目录 一.配置文件 二.图片 三.代码实现 前后端代码: java滚动验证码-前端和后端完整版_outdata的博客-CSDN博客_java图片滚动验证 图形滑动验证码JAVA实现[前后端结合]_Le ...

  2. java 解析滑动验证码图片_滑动图片验证码demo

    [实例简介] 极验验证更改后的版本,该demo导入eclipse直接可用,带有详细使用说明文档,验证通过发送短信 [实例截图] [核心代码] 极验验证使用说明 └── 极验验证使用说明 ├── gt- ...

  3. java验证码图片滑动验证码_图片滑动验证码的生成

    使用Java生成图片滑动验证码 image.png 目前接到了一个新的小需求,要在登录时进行滑动图片验证. 搜了一下网上的demo,没有太多很完整的demo.就参考各种文档自己拼凑了一个出来.整理一下 ...

  4. Java添加一个滑动验证码,有啥可难的,分分钟加一个

    滑动验证一般和短信验证码是成对出现,为了避免短信被刷的情况,滑动验证码是一个必须添加的一个功能,下面给大家介绍通过java添加滑动验证的方法. 如何使在电脑端使用的滑动验证,需要引入一段js资源,这里 ...

  5. java 滑块验证码 开源,Java AWT生成滑动验证码

    最近工作需要在登录时使用滑动验证码做登录校验,在生成验证码图片的时候碰到了不小的麻烦 : (. 网上能查到的做法基本上都是使用一张已存在的实际图片作为滑块的图形模板,然后按照此模板做二重循环逐像素地从 ...

  6. 使用java + selenium + OpenCV破解网易易盾滑动验证码

    使用java + selenium + OpenCV破解网易易盾滑动验证码 网易易盾:dun.163.com * 验证码地址:https://dun.163.com/trial/jigsaw * 使用 ...

  7. 一步步实现滑动验证码(拼图验证码),Java图片处理关键代码

    最近滑动验证码在很多网站逐步流行起来,一方面对用户体验来说,比较新颖,操作简单,另一方面相对图形验证码来说,安全性并没有很大的降低.当然到目前为止,没有绝对的安全验证,只是不断增加攻击者的绕过成本. ...

  8. 滑动验证码处理 java实现

    关于滑动验证码的解决方法,网上已经有很多详细的描述了,但是绝大多数都是用的python,这边就扩充一下java,但是验证准确率不是100%,只是强调一下在解决中可能会出现的问题. 注意点 元素截取 元 ...

  9. Java滑动验证码【前端部分】

    Java滑动验证码[前端] 实现思路 1.请求后端获得背景图.滑块.x.y.误差范围bound 2.将滑块设置到对应的位置:top = y 3.添加鼠标滑动事件 实现代码 后端请求(Controlle ...

最新文章

  1. oracle socket读取超时,设置套接字操作超时
  2. python列表根据值找索引_python实现列表中由数值查到索引的方法
  3. PAT (Advanced Level) 1003 Emergency(最短路+动态规划)
  4. 干货:嵌入式C语言源代码优化方案(非编译器优化)
  5. localStorage、sessionStorage用法总结
  6. C#串口SerialPort常用属性方法
  7. android动画放大后缩小,Android 补间动画 scale(缩放)
  8. 学习hadoop需要什么基础
  9. 力扣——盛最多水的容器
  10. 致敬CondConv!Intel提出即插即用的“万金油”动态卷积ODConv
  11. AHCI 与 IDE
  12. C# PDF转图片(JPG,Png)
  13. java 全双工串口,Java实现全双工串口通信
  14. 浅谈form标签与table标签
  15. Python给excel加密(linux可用版)
  16. linux 改变输出端口,linux – 更改ssh端口后的Fail2ban设置
  17. 腾讯云区块链,产业区块链的坚守者
  18. 消费者运营-阿里系三大模型
  19. 关于JackJson接收前端UTC格式化报错SON parse error: Cannot deserialize value of type `java.util.Date` from String
  20. git bash 下 pacman 环境配置

热门文章

  1. 昨晚,谷歌发布了一个可怕的人工智能!
  2. /var/tmp/rpm-tmp. 安装失败时找不到tmp文件的应对方法
  3. 初入Kaggle之数据集的使用及预测结果生成
  4. AI论文下载-AAAI ACCV AISTATS COLT CVPR ECCV ICCV ICLR ICML IJCAI JMLR NeurIPS WACV等
  5. reset.css(常用项目代码初始化)
  6. 应对ME23数据抓取时ID发生变化 SAP
  7. Tahoma 字体在网页中应用的问题
  8. 代数表达式c语言表达式,[单选] 设floata=2,b=4,c=3;,以下C语言表达式与代数式(a+b)+c计算结果不一致的是()...
  9. FileZilla软件的下载、服务器站点配置与数据传输方法
  10. 【读书笔记】见识——吴军