T O P

[资源分享]     验证码

  • By - 楼主

  • 2019-10-16 10:49:24
  • 短信验证码:

     

    import java.util.Random;

     

    import javax.servlet.http.HttpServletRequest;

    import javax.servlet.http.HttpServletResponse;

     

    import org.springframework.stereotype.Controller;

    import org.springframework.web.bind.annotation.RequestMapping;

    import org.springframework.web.bind.annotation.RequestMethod;

    import org.springframework.web.bind.annotation.RequestParam;

    import org.springframework.web.bind.annotation.ResponseBody;

     

    import com.alibaba.fastjson.JSONObject;

    import com.bessky.financail.thirdparty.util.SendAliyunMessage;

    import com.bessky.financial.common.json.ResponseJson;

    import com.bessky.financial.common.util.StatusCode;

     

    import javax.servlet.http.HttpSession;

     

    /**

     * 

     * 发送验证码

     

     */

    @Controller

    @RequestMapping(value = "verifycode")

    public class VerifyCodeController

    {

     

        @RequestMapping(value = "getverifycode", method = {RequestMethod.GET})

        @ResponseBody

        public ResponseJson sendVerifYCode(HttpServletRequest request, @RequestParam("style") String style)

        {

            ResponseJson responseJson = new ResponseJson();

            try

            {

                JSONObject json = null;

                // 生成6位验证码

                String verifyCode = String.valueOf(new Random().nextInt(899999) + 100000);

                // 发送短信

                String phone = "1371********";

                responseJson = SendAliyunMessage.sendMsg(phone, verifyCode);

                if (StatusCode.SUCCESS.equals(responseJson.getStatus()))

                {

                    request.getSession().removeAttribute("verifyCode");

                    // 将验证码存到session中,同时存入创建时间

                    json = new JSONObject();

                    json.put("verifyCode", verifyCode);

                    json.put("createTime", System.currentTimeMillis());

                    // 将认证码存入SESSION

                    request.getSession().setAttribute("verifyCode", json);

                }

            }

            catch (Exception e)

            {

                e.printStackTrace();

            }

            return responseJson;

        }

    }

     

    发送短信验证码存入session,当然也可以将发送的验证码存入数据库然后从库中取出来比较。

     

    JSONObject json = (JSONObject)request.getSession().getAttribute("verifyCode");

            if(!json.getString("verifyCode").equals(verifyCode)){

                responseJson.setMessage("验证码错误");

                return responseJson;

            }

            if((System.currentTimeMillis() - json.getLong("createTime")) > 1000 * 60 * 5){

                responseJson.setMessage("验证码过期");

                return responseJson;

            }

     

    普通验证码

    web.xml中配置获取验证码servlet

    <servlet>

    <servlet-name>kaptcha</servlet-name>

    <servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class>

    <init-param>

    <param-name>kaptcha.border</param-name>

    <param-value>no</param-value>

    </init-param>

    <init-param>

    <param-name>kaptcha.border.color</param-name>

    <param-value>105,179,90</param-value>

    </init-param>

    <init-param>

    <param-name>kaptcha.image.width</param-name>

    <param-value>160</param-value>

    </init-param>

    <init-param>

    <param-name>kaptcha.image.height</param-name>

    <param-value>36</param-value>

    </init-param>

    <init-param>

    <param-name>kaptcha.textproducer.font.size</param-name>

    <param-value>32</param-value>

    </init-param>

    <init-param>

    <param-name>kaptcha.session.key</param-name>

    <param-value>KAPTCHA_SESSION_KEY</param-value>

    </init-param>

    <init-param>

    <param-name>kaptcha.textproducer.char.length</param-name>

    <param-value>4</param-value>

    </init-param>

    <init-param>

    <param-name>kaptcha.textproducer.font.names</param-name>

    <param-value>Arial</param-value>

    </init-param>

    <init-param>

    <param-name>kaptcha.obscurificator.impl</param-name>

    <param-value>com.google.code.kaptcha.impl.NoGimpy</param-value>

    </init-param>

    </servlet>

    <servlet-mapping>

    <servlet-name>kaptcha</servlet-name>

    <url-pattern>/kaptcha.jpg</url-pattern>

    </servlet-mapping>

    校验验证码

     

    String key = (String) session.getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);

     

    // 验证码校验

    if (!StringUtils.equalsIgnoreCase(captcha, key)) {

    json.setStatus(StatusCode.FAIL);

    json.setMessage(I18nUtils.getMessage("60000403"));

    return json;

    }

    滑块验证码后续更新!

    欢迎加入共同探讨

    本帖子中包含资源

    您需要 登录 才可以下载,没有帐号?立即注册