在业务中台使用AJ-Captcha组件做滑块验证码校验功能的时候,本地环境和开发环境部署程序出现滑块验证码失效问题
初步判断以为是传入的校验参数不对,但修改代码后,在本地及开发环境测试了校验功能正常,但测试环境依然存在同样异常,
再次排查推测可能是服务器或者容器时间存在异常,但同步容器时间后,问题再次出现,
查询AJ-Captcha官方文档发现有这样一段描述
遂改造程序中验证码生成后的保存位置从本地内存到redis中
总结:对于分布式部署的应用,建议应用自己实现CaptchaCacheService,比如用Redis,参考service/spring-boot代码示例。
如果应用是单点的,也没有使用redis,那默认使用内存。
内存缓存只适合单节点部署的应用,否则验证码生产与验证在节点之间信息不同步,导致失败。