当前位置: 首页 > 科技观察

这样一来,验证码瞬间就高了

时间:2023-03-22 00:38:42 科技观察

前言行为验证码是通过用户操作来验证的。常见的行为验证码包括拖拽和触摸。拖动验证就是根据图片显示,将指定图形拖动到指定位置,完成验证。一键验证码是用鼠标点击示例中出现的图形完成验证。行为验证码应用今天给大家推荐一款非常不错的行为验证码AJ-Captcha(项目地址https://gitee.com/anji-plus/captcha),该项目包括滑动拼图和文本选择码两种验证方式,在除了内嵌交互,还提供弹出交互方式,完全不影响原有UI布局。AJ-Captcha的验证流程如下:用户访问登录页面,发送显示行为验证码的请求,用户根据提示完成验证码拼图/点击用户提交表单,前端将第二步的输出连同表单一起提交给后台验证数据。后台之后,后台需要调用captchaService.verification进行二次验证。Step4将验证通过/失败返回给产品应用后台,再返回给前台。如下所示。如果你是Maven开发者,使用起来非常方便,项目的维护者已经将依赖推送到中央仓库。只需要引入依赖就可以完成90%的工作量。接下来,您只需要在登录界面进行二次验证即可。项目集成html、vue、flutter、uni-app、AndroidKotlin、IOS、php等多种前端语言,AJ_Captcha可以轻松集成到项目中。下面我们以SpringBoot+html为例,看看如何快速集成AJ_Captcha来完成行为验证码的交互过程。第一步,在SpringBoot中引入AJ_Captcha依赖com.anji-plusspring-boot-starter-captcha1.2.9>/dependency>AJ_Captcha默认实现验证码生成验证接口。验证码生成接口默认请求地址为/captcha/get,验证接口默认请求地址为/captcha/check。也就是说,完成以上步骤后,就可以向前端提供验证码的获取和验证的接口了。如果你还想让你的验证码更加个性化,可以配置如下属性:#幻灯片验证,底图路径,不配置则使用默认图片#支持完整路径#支持项目路径,以classpath开头:,取资源目录下的路径,例如:classpath:images/jigsawaj.captcha.jigsaw=classpath:images/jigsaw#幻灯片验证,底图路径,如果不配置,会使用默认图片#支持完整路径#支持项目路径,以classpath:开头,取resource目录下的路径,例如:classpath:images/pic-clickaj.captcha.pic-click=classpath:images/pic-click#对于分布式部署应用,我们推荐应用自己实现CaptchaCacheService,比如使用Redis或者memcache,#参考CaptchaCacheServiceRedisImpl.java#如果应用是单点的,没有使用redis,则默认使用内存。#内存缓存只适用于单节点部署的应用,否则节点间验证码制作和验证信息无法同步,导致失败。#!!!注意,如果应用使用spring-boot-starter-data-redis,#PleaseopenCaptchaCacheServiceRedisImpl.java注释。#redis----->SPI:在resources目录下新建META-INF.services文件夹(两层),引用当前服务资源。#Cachelocal/redis...aj.captcha.cache-type=local#local缓存阈值,达到这个值,清除缓存#aj.captcha.cache-number=1000#local定期清除过期缓存(以秒为单位),Settingitto0表示不执行#aj.captcha.timing-clear=180#Captchatypedefault两者都被实例化了。aj.captcha.type=default#汉字统一使用Unicode,保证程序通过@value读取中文,可以通过这个在线转换;yml格式不需要转换#https://tool.chinaz.com/tools/unicode。aspx中文转Unicode#右下角水印文字(我的水印)aj.captcha.water-mark=\u6211\u7684\u6c34\u5370#右下角水印字体(不配置时默认使用文泉义正黑)#因为宋体等涉及版权,我们的jar中内置了开源字体【文泉义正黑】#方法一:直接配置OS层已有的字体名称,如:宋体#方法二:自定义特定字体,请设置字体放在项目资源下的fonts文件夹中,支持ttf\ttc\otf字体#aj.captcha.water-font=WenQuanZhengHei.ttf#点击文字验证的文字字体code(Wenquanyizhenghei)#aj.captcha.font-type=WenQuanZhengHei.ttf#Validationslidingpuzzleallowederroroffset(default5pixels)aj.captcha.slip-offset=5#aes加密坐标启用或禁用(true|false)aj.captcha.aes-status=true#滑动干扰项(0/1/2)aj.captcha.interference-options=2aj.captcha.history-data-clear-enable=false#是否开启一分钟接口请求次数限制true|falseaj.captcha.req-frequency-limit-enable=false#验证失败5次,获取接口锁定=#获取接口请求一分钟内限制aj.captcha.req-get-minute-limit=30#查询接口请求一分钟内限制aj.captcha.req-check-minute-limit=60#verify限制一分钟内请求数interfaceaj.captcha.req-verify-minute-limit=60第二步,前端伪代码调用接口1.引入验证码的样式及验证等文件2.验证码获取及验证验证码后验证成功,返回A序列码进行二次验证第三步,用户登录。二次验证客户端登录时,携带验证成功返回的序列号,在登录界面进行二次验证,完成验证过程。@AutowiredprivateCaptchaServicecaptchaService;@PostMapping("login")publicResultBeanlogin(@RequestBodyLoginUseruser,StringcaptchaVerification){ResultBeanresultBean=newResultBean();CaptchaVOcaptchaVO=newCaptchaVO();captchaVO.setCaptchaVerification(captchaVerification);ResponseModelresponseModel=captchaService.verification(captchaVOponseif);.isSuccess()){resultBean.fillCode(0,responseModel.getRepMsg());returnresultBean;}//验证通过后,继续登录流程}今天的内容就介绍到这里,趁此机会,尝试使用这个高价值行为验证码替代项目中的图形验证码。本文转载自微信公众号“Java之旅”,可通过以下二维码关注。转载本文请联系Java之旅公众号。