文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

验证码这样做,瞬间高出一个逼格

2024-12-02 23:42

关注

拖动式验证就是根据图片显示,将指定的图形拖动到指定位置完成验证。而点触式验证码就是通过鼠标点击出示例中出现的图形完成验证。

行为验证码应用

今天推荐一款非常优秀的行为验证码AJ-Captcha(项目地址https://gitee.com/anji-plus/captcha),这个项目包含了滑动拼图和文字点选两种类型的验证码,除了嵌入式交互,还提供了弹出式交互的方式,完全不影响原UI布局。

AJ-Captcha的验证流程如下:

  1. 用户访问登录页面,发送请求显示行为验证码
  2. 用户按照提示要求完成验证码拼图/点击
  3. 用户提交表单,前端将第二步的输出一同提交到后台
  4. 验证数据随表单提交到后台后,后台需要调用captchaService.verification做二次校验。
  5. 第4步返回校验通过/失败到产品应用后端,再返回到前端。如下图所示。

如果你是Maven开发者,使用起来非常方便,项目的维护人员已经将依赖推送至中央仓库。只需要引入依赖就完成了90%的工作量。接下来只需要在登录接口中进行二次验证就可以了。

项目集成了包括html、vue、flutter、uni-app、Android Kotlin、IOS、php等多种前端语言,可以轻松将AJ_Captcha集成到项目中。

接下来我们以Spring Boot+html为例看看如何快速集成AJ_Captcha完成行为验证码的交互流程。

第一步、Spring Boot中引入AJ_Captcha依赖

  1.  
  2.     com.anji-plus 
  3.     spring-boot-starter-captcha 
  4.     1.2.9 
  5.  

 

AJ_Captcha默认实现了验证码生成和验证接口,验证码生成接口的默认请求地址是/captcha/get,验证接口的默认请求地址为/captcha/check。也就是说完成以上步骤,就可以提供给前端获取和验证验证码的接口了。如果你还想让你的验证码生成的个性一点,可以配置以下属性:

  1. # 滑动验证,底图路径,不配置将使用默认图片 
  2. # 支持全路径 
  3. # 支持项目路径,以classpath:开头,取resource目录下路径,例:classpath:images/jigsaw 
  4. aj.captcha.jigsaw=classpath:images/jigsaw 
  5. # 滑动验证,底图路径,不配置将使用默认图片 
  6. # 支持全路径 
  7. # 支持项目路径,以classpath:开头,取resource目录下路径,例:classpath:images/pic-click 
  8. aj.captcha.pic-click=classpath:images/pic-click 
  9.  
  10. # 对于分布式部署的应用,我们建议应用自己实现CaptchaCacheService,比如用Redis或者memcache, 
  11. # 参考CaptchaCacheServiceRedisImpl.java 
  12. # 如果应用是单点的,也没有使用redis,那默认使用内存。 
  13. # 内存缓存只适合单节点部署的应用,否则验证码生产与验证在节点之间信息不同步,导致失败。 
  14. # !!!注意啦,如果应用有使用spring-boot-starter-data-redis, 
  15. # 请打开CaptchaCacheServiceRedisImpl.java注释。 
  16. # redis ----->  SPI:在resources目录新建META-INF.services文件夹(两层),参考当前服务resources。 
  17. # 缓存local/redis... 
  18. aj.captcha.cache-type=local 
  19. local缓存的阈值,达到这个值,清除缓存 
  20. #aj.captcha.cache-number=1000 
  21. local定时清除过期缓存(单位秒),设置为0代表不执行 
  22. #aj.captcha.timing-clear=180 
  23.  
  24. # 验证码类型default两种都实例化。 
  25. aj.captcha.type=default 
  26. # 汉字统一使用Unicode,保证程序通过@value读取到是中文,可通过这个在线转换;yml格式不需要转换 
  27. # https://tool.chinaz.com/tools/unicode.aspx 中文转Unicode 
  28. # 右下角水印文字(我的水印) 
  29. aj.captcha.water-mark=\u6211\u7684\u6c34\u5370 
  30. # 右下角水印字体(不配置时,默认使用文泉驿正黑) 
  31. # 由于宋体等涉及到版权,我们jar中内置了开源字体【文泉驿正黑】 
  32. # 方式一:直接配置OS层的现有的字体名称,比如:宋体 
  33. # 方式二:自定义特定字体,请将字体放到工程resources下fonts文件夹,支持ttf\ttc\otf字体 
  34. # aj.captcha.water-font=WenQuanZhengHei.ttf 
  35. # 点选文字验证码的文字字体(文泉驿正黑) 
  36. # aj.captcha.font-type=WenQuanZhengHei.ttf 
  37. # 校验滑动拼图允许误差偏移量(默认5像素) 
  38. aj.captcha.slip-offset=5 
  39. # aes加密坐标开启或者禁用(true|false
  40. aj.captcha.aes-status=true 
  41. # 滑动干扰项(0/1/2) 
  42. aj.captcha.interference-options=2 
  43.  
  44. aj.captcha.history-data-clear-enable=false 
  45.  
  46. # 接口请求次数一分钟限制是否开启 true|false 
  47. aj.captcha.req-frequency-limit-enable=false 
  48. # 验证失败5次,get接口锁定 
  49. aj.captcha.req-get-lock-limit=5 
  50. # 验证失败后,锁定时间间隔,s 
  51. aj.captcha.req-get-lock-seconds=360 
  52. # get接口一分钟内请求数限制 
  53. aj.captcha.req-get-minute-limit=30 
  54. check接口一分钟内请求数限制 
  55. aj.captcha.req-check-minute-limit=60 
  56. # verify接口一分钟内请求数限制 
  57. aj.captcha.req-verify-minute-limit=60 

第二步、前端伪代码调用接口

引入验证码的样式以及验证等文件

验证码获取及验证

  1.  

验证码验证成功之后,会返回一个用于二次验证的串码。

第三步,用户登录,二次验证

客户端登录的时候携带验证成功后返回的串码,在登录接口中进行二次验证,验证流程完毕。

  1. @Autowired 
  2. private CaptchaService captchaService; 
  3.  
  4. @PostMapping("login"
  5. public ResultBean login(@RequestBody LoginUser user,String captchaVerification){ 
  6.     ResultBean resultBean = new ResultBean(); 
  7.     CaptchaVO captchaVO = new CaptchaVO(); 
  8.     captchaVO.setCaptchaVerification(captchaVerification); 
  9.     ResponseModel responseModel = captchaService.verification(captchaVO); 
  10.     if(!responseModel.isSuccess()){ 
  11.         resultBean.fillCode(0,responseModel.getRepMsg()); 
  12.         return resultBean; 
  13.     } 
  14.     // 验证通过后,继续登录流程 

 今天的内容就介绍到这里了,趁这个机会,试着使用这款高颜值的行为验证码来替换项目中的图形验证码吧。

本文转载自微信公众号「Java旅途」,可以通过以下二维码关注。转载本文请联系Java旅途公众号。

 

来源:Java旅途 内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯