Java 介入极验滑动验证码

 

1.是否开启验证码接口

接口名:/api3/account/captcha/open

http://localhost:8080/api3/account/captcha/open

参数非空:mobileNo;countryNo;

请求方式:get

 

2.预处理验证码接口

接口名:/api3/account/captcha/start

无参数:

请求方式:get

 

3.获取验证码接口

接口名:/api3/account/captcha/verify

参数非空:geetest_challenge,geetest_validate,geetest_seccode,

mobileNo,countryNo。

请求方式:post

{"success":1,"gt":"b46d1900d0a894591916ea94ea91bd2c","challenge":"aca5d5a08c397aba47a973a1f968e9af"}

 

@RequestMapping("/StartCaptchaServlet")
    protected void StartCaptchaServlet(HttpServletRequest request,
                         HttpServletResponse response) throws ServletException, IOException {

        GeetestLib gtSdk = new GeetestLib(GeetestConfig.getCaptcha_id(), GeetestConfig.getPrivate_key());

        String resStr = "{}";

        //自定义userid
        String userid = "test";

        //进行验证预处理
        int gtServerStatus = gtSdk.preProcess(userid);

        //将服务器状态设置到session中
        request.getSession().setAttribute(gtSdk.gtServerStatusSessionKey, gtServerStatus);
        //将userid设置到session中
        request.getSession().setAttribute("userid", userid);

        resStr = gtSdk.getResponseStr();

        PrintWriter out = response.getWriter();
        out.println(resStr);

    }

    @RequestMapping("/VerifyLoginServlet")
    protected void VerifyLoginServlet(HttpServletRequest request,
                          HttpServletResponse response) throws ServletException, IOException {

        GeetestLib gtSdk = new GeetestLib(GeetestConfig.getCaptcha_id(), GeetestConfig.getPrivate_key());

        String challenge = request.getParameter(GeetestLib.fn_geetest_challenge);
        String validate = request.getParameter(GeetestLib.fn_geetest_validate);
        String seccode = request.getParameter(GeetestLib.fn_geetest_seccode);

        //从session中获取gt-server状态
        int gt_server_status_code = (Integer) request.getSession().getAttribute(gtSdk.gtServerStatusSessionKey);

        //从session中获取userid
        String userid = (String)request.getSession().getAttribute("userid");

        int gtResult = 0;

        if (gt_server_status_code == 1) {
            //gt-server正常,向gt-server进行二次验证

            gtResult = gtSdk.enhencedValidateRequest(challenge, validate, seccode, userid);
            System.out.println(gtResult);
        } else {
            // gt-server非正常情况下,进行failback模式验证

            System.out.println("failback:use your own server captcha validate");
            gtResult = gtSdk.failbackValidateRequest(challenge, validate, seccode);
            System.out.println(gtResult);
        }




        if (gtResult == 1) {
            // 验证成功
            PrintWriter out = response.getWriter();
            Map<String,Object> data = new HashMap<String, Object>();
            try {
                data.put("status", "success");
                data.put("version", gtSdk.getVersionInfo());
            } catch (Exception e) {
                e.printStackTrace();
            }

            JsonSerializer json = new JsonSerializer();
            out.println(json.serialize(data.toString()));
        }
        else {
            // 验证失败
            Map<String,Object> data = new HashMap<String, Object>();
            try {
                data.put("status", "fail");
                data.put("version", gtSdk.getVersionInfo());
            } catch (Exception e) {
                e.printStackTrace();
            }
            PrintWriter out = response.getWriter();
            JsonSerializer json = new JsonSerializer();
            out.println(json.serialize(data.toString()));
        }


//
//        if (gtResult == 1) {
//            // 验证成功
//            PrintWriter out = response.getWriter();
//            JSONObject data = new JSONObject();
//            try {
//                data.put("status", "success");
//                data.put("version", gtSdk.getVersionInfo());
//            } catch (JSONException e) {
//                e.printStackTrace();
//            }
//            out.println(data.toString());
//        }
//        else {
//            // 验证失败
//            JSONObject data = new JSONObject();
//            try {
//                data.put("status", "fail");
//                data.put("version", gtSdk.getVersionInfo());
//            } catch (JSONException e) {
//                e.printStackTrace();
//            }
//            PrintWriter out = response.getWriter();
//            out.println(data.toString());
//        }

    }

 

转载于:https://my.oschina.net/u/1037605/blog/810702

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值