当前位置: 首页 > 后端技术 > Java

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

时间:2023-04-01 21:22:55 Java

前言行为验证码是通过用户操作来验证的。常见的行为验证码包括拖拽和触摸。拖动验证就是根据图片显示,将指定图形拖动到指定位置,完成验证。一键验证码是用鼠标点击示例中出现的图形完成验证。行为验证码应用今天给大家推荐一款非常不错的行为验证码AJ-Captcha(项目地址https://gitee.com/anji-plus/c...),本项目包括滑动拼图和文本选择两种类型的验证码除了内嵌交互,还提供了弹窗交互方式,完全不影响原有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.9AJ_Captcha默认实现验证码生成验证接口。验证码生成接口默认请求地址为/captcha/get,验证接口默认请求地址为/captcha/check。也就是说,完成以上步骤后,就可以向前端提供验证码的获取和验证的接口了。如果你还想让你的验证码更加个性化,可以配置如下属性:#幻灯片验证,底图路径,不配置会使用默认图片#支持完整路径#支持项目路径,以classpath:开头,取resourcedirectory路径下,例如:classpath:images/jigsawaj.captcha.jigsaw=classpath:images/jigsaw#滑动验证,底图路径,不配置会使用默认图片#支持完整路径#支持项目路径,启动withclasspath:,取resource目录下的路径,例如:classpath:images/pic-clickaj.captcha.pic-click=classpath:images/pic-click#对于分布式部署应用,我们建议应用实现CaptchaCacheService通过本身,比如使用Redis或者memcache,#参考CaptchaCacheServiceRedisImpl.java#如果应用是单点的,没有使用redis,则默认使用内存。#内存缓存只适用于部署在单节点上的应用,否则验证码制作和验证信息不会在节点间同步,导致失败。#!!!注意,如果应用使用spring-boot-starter-data-redis,#请打开CaptchaCacheServiceRedisImpl.java注释。#redis----->SPI:在resources目录下新建META-INF.services文件夹(两层),引用当前服务资源。#Cachelocal/redis...aj.captcha.cache-type=local#本地缓存的阈值,当达到这个值时,清除缓存#aj.captcha.cache-number=1000#本地定期清除过期缓存(以秒为单位),设置为0表示不执行#aj.captcha.timing-clear=180#spring.redis.host=10.108.11.46#spring.redis.port=6379#spring.redis.password=#spring.redis.database=2#spring.redis.timeout=6000#实例化验证码类型default。aj.captcha.type=default#汉字使用Unicode,保证程序通过@value读取中文,可以在线转换;yml格式不需要转换#https://tool.chinaz.com/tools/unicode。aspxChinesetoUnicode#右下角水印文字(我的水印)aj.captcha.water-mark=\u6211\u7684\u6c34\u5370#右下角水印字体(不配置时默认使用文泉义正黑)#因为宋体等涉及版权,而我们jar中内置了开源字体【文泉义正黑】#方法一:直接配置OS层已有的字体名称,如:宋体#方法二:自定义特定字体,请设置字体放在项目资源下的fonts文件夹中,支持ttf\ttc\otf字体#aj.captcha.water-font=WenQuanZhengHei.ttf#点击文字验证的文字字体code(WenQuanYi正黑)#aj.captcha.font-type=WenQuanZhengHei.ttf#验证滑动拼图的允许误差偏移量(默认5像素)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次,get接口被锁定=#限制一分钟内的请求次数getinterfaceaj.captcha.req-get-minute-limit=30#限制check接口一分钟内的请求次数aj.captcha.req-check-minute-limit=60#verify限制一个请求的次数一分钟内接口aj.captcha.req-verify-minute-limit=60秒step,前端伪代码调用接口引入验证码的样式和验证等文件验证码获取和验证验证码验证成功后,会返回一个二次验证的序列号。第三步是用户登录。二次验证客户端登录时,携带验证成功返回的序列号,在登录界面进行二次验证,验证过程完成。@AutowiredprivateCaptchaServicecaptchaService;/***页面获取token*大屏数据校验*@paramuser*@return*/@PostMapping("getWebToken")publicResultBeangetWebToken(@RequestBodyLoginUseruser,StringcaptchaVerification){ResultBeanresultBean=new结果Bean();CaptchaVOcaptchaVO=newCaptchaVO();captchaVO.setCaptchaVerification(captchaVerification);ResponseModelresponseModel=captchaService.verification(captchaVO);if(!responseModel.isSuccess()){resultBean.fillCode(0,responseModel.getRepMsg());返回结果Bean;}//验证通过后,继续登录流程}今天的内容就介绍到这里,借此机会,尝试用这个高价值的行为验证码来代替项目Bar中的图形验证码。