小编给大家分享一下Java如何实现滑动验证码,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!功能:java实现滑动验证码项目是采用SpringBoot,Maven开发工具:采用idea1.效果演示2.后端代码控制层@Cont
小编给大家分享一下Java如何实现滑动验证码,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
功能:java实现滑动验证码
@Controllerpublic class SliderCodeController { @Autowired ResourceLoader resourceLoader; @Autowired private 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 @ResponseBody Map< 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; }}
@Componentpublic 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; } }
<!DOCTYPE html><html xmlns:th="http://www.thymeleaf.org"><head><meta charset="UTF-8"><title>滑动验证码</title><link rel="stylesheet" href="/CSS/slide.css" rel="external nofollow" ><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>
看完了这篇文章,相信你对“Java如何实现滑动验证码”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网精选频道,感谢各位的阅读!
--结束END--
本文标题: Java如何实现滑动验证码
本文链接: https://lsjlt.com/news/323651.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
2024-05-24
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0