相信对于验证码,大家应该都不陌生,我们常常在登录账户的时候,需要先填入验证码,才能有登录操作。大家有没有好奇过,我们已经有密码了,为什么还需要验证吗呢?小编带大家从开发的角度来分析,为什么要在开发用户登录功能的时候要加验证码,验证码有什么作用?
其实,验证码就是为了增强网站的安全性,防止机器暴力破解。验证码一般都会设置为歪歪扭扭的图片,这样做的目的也是为了增加机器识别的难度。
为了防止机器暴力破解,验证码一般会有一个过期时间,并且每个验证码只能被使用一次。
设置验证码有效时长:
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);
}
IE浏览器下使用GET发送请求时,如果两次请求的地址和参数相同,在不刷新页面的情况下,浏览器会缓存第一次请求的内容,服务端更新后浏览器仍然显示第一次的内容。这也就是为什么我们总会看到验证码请求地址上会增加一个随机数的原因。
https://ip:port?getCode?random=newDate().getTime();
我们最常见的验证码有3种
1.四位数字,随机的数字字符串,最原始的验证码,验证作用几乎为零。
2.随机数字+字母及干扰像素的图片
3.滑动拼图(这种方式完全是由前端完成的)
以上就是关于验证码的介绍,现在你知道验证码有什么作用了吧。