下面是注册
如果是手机用户注册,需要发送短信验证码
说明:
发送图形验证码是为了拦截发送短信的.但是不拦截"注册帐号"
但是,用户体验很别扭,因为图形验证码很显然是错误的,但是却可以注册成功.
如果点击注册帐号 ,也要校验图形验证码,那就让用户输入两次图形验证码,显然不是很人性化
注意:注册时发送短信每次都需要输入图形验证码,而不是发送3次短信才要输入.
那么如何解决这个问题呢?
把注册拆分为两步:
第一步:发送短信验证码
第二步:设置密码和用户名
这样达到的目的:
(1)可以通过图形验证码拦截发送手机短信;
(2)注册流程只需要输入一次图形验证码
每次校验图形验证码,都刷新后台的图形验证码
/**** 校验图形验证码** @param request* @param response* @param authImage* @return : 返回null则表示校验通过*/public WapResponseDto verifyImageCode(HttpServletRequest request,HttpServletResponse response,String authImage) {//检查是否需要校验图形验证码WapResponseDto wapResponseDto = null;if (isNeedImageCode(request, response)) {//需要图形验证码String authCode1 = getAuthCode(request, response);if (!VerifyCodeUtils.checkAuthImageCode(authImage, authCode1)) {wapResponseDto = new WapResponseDto();wapResponseDto.setResult(false);wapResponseDto.setErrorFieldName("authImage");wapResponseDto.setErrorMessage("图形验证码错误,请重新输入");wapResponseDto.setNeedAuthImage(true);resetAuthImageCode(request, response);//不管是否校验通过,都会刷新服务器端的图形验证码return wapResponseDto;}}resetAuthImageCode(request, response);return null;}
应用:
现在需要定一个图形验证码什么刷新的规则
问题:获取图形验证码图片时,会刷新吗?
会,并且必须刷新
如果不刷新的话,每次返回的图片都会显示相同的验证码
问题:校验完图形验证码之后,需要刷新服务器端的图形验证码吗?
不仅要刷新前端的图形验证码图片,而且还要刷新服务器端的图形验证码
如果不刷新服务器端的图形验证码,就会有一个漏洞:
黑客获取到一个图形验证码之后,使用工具不断的访问,这样的话,图形验证码每次都能校验通过.