我们在开发用户登录功能的时候,总会被要求添加验证码功能!那么,为什么我们需要添加这个验证码呢?验证码有什么作用?常见的验证码有哪些?验证码是为了增强网站的安全性,防止机器暴力破解。验证码一般设置为歪的图片,这样做的目的是增加机器识别的难度。机器一般会通过枚举的方式匹配验证码。枚举法利用计算机运算速度快、准确率高的特点,对解决问题可能出现的所有情况进行无遗漏的检查,找出符合要求的。答案,所以枚举法为了答案的全面性牺牲了时间。为了防止机器暴力破解,验证码一般都有有效期,每个验证码只能使用一次。设置验证码有效期:redisService.setCacheObject(verifyKey,verifyCode,Constants.CAPTCHA_EXPIRATION,TimeUnit.MINUTES);每次使用验证码后删除redis:privatevoidcheckCode(Stringcode,Stringuuid)throwsValidateCodeException{if(StringUtils.isEmpty(code)){thrownewValidateCodeException("图片验证码不能为空");}if(StringUtils.isEmpty(uuid)){thrownewValidateCodeException("图片验证码已过期");}StringverifyKey=Constants.CAPTCHA_CODE_KEY+uuid;Stringcaptcha=redisService.getCacheObject(verifyKey);redisService.deleteObject(verifyKey);}下使用GET发送请求时IE浏览器,如果两次请求的地址和参数相同,浏览器会缓存第一次请求的内容,不会刷新页面,服务端更新后,浏览器仍然显示第一次的内容.这就是为什么我们总是看到验证码请求地址中添加了一个随机数。https://ip:port?getCode?random=newDate().getTime();常用验证码:四位数字,随机一串数字,最原始的验证码,验证效果几乎为零。随机数+字母和干扰像素的图片。滑动拼图(这种方式完全由前端完成)。本文转载自微信公众号“Java之旅”,可通过以下二维码关注。转载本文请联系Java之旅公众号。
