服务器端的Google Recaptcha v2验证失败

时间:2015-02-18 05:51:31

标签: java javascript spring recaptcha

我遇到了recaptcha v2的一个问题。 我在客户端和服务器端完成了我的代码验证。 但有趣的是我在这个rec​​aptcha v2中注意到的是 如果我的客人在我的登录页面(演示)中验证了其他标签中的任何其他Google帐户的登录信息,则会显示要输入(输入)并验证的号码(图片)。 如果我是客人验证我的登录页面(演示)并登录我的另一个标签中的一个谷歌帐户,它没有显示任何验证码和验证"我不是机器人!&#34 ; .. 谁能告诉我发生什么事了?

的Login.jsp

<script src='https://www.google.com/recaptcha/api.js' async defer></script>


<form><div class="g-recaptcha" name="recaptcha" id="recaptcha" data-sitekey="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"></div></form>

Controller.java:我在登录控制器方法

中调用此方法
    public boolean captchaValidationAndLogin(
        String recaptchaResponse, HttpServletRequest request) {
    try{
        String secretParameter="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
        System.out.println(recaptchaResponse);

        // Send get request to Google reCaptcha server with secret key
        URL url = new URL(
                "https://www.google.com/recaptcha/api/siteverify?secret="
                        +secretParameter+"&response="+recaptchaResponse+"&remoteip="
                        +request.getRemoteAddr());  
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setRequestMethod("GET");
        String line, outputString = "";

        BufferedReader reader = new BufferedReader(
                new InputStreamReader(conn.getInputStream()));
        while ((line = reader.readLine()) != null) {
        outputString += line;
        }
    System.out.println("Status in string: "+outputString);
    // Convert response into Object
    CaptchaStatus status=new Gson().fromJson(outputString, CaptchaStatus.class);
        if(status.isSuccess()){
            System.out.println("success");
            return true;
            }
        else{
            System.out.println("failed");
            return false;
            }
    }//try
    catch(Exception e){
        e.printStackTrace();
        return false;
        }
}

LoginController.java:

if(loginAttempts >= 3)
    {
        /* Captcha token validation*/
        captcha = false;
        //System.out.println("Before calling captcha method");
        String recaptchaResponse = request.getParameter(
                "g-recaptcha-response");
        captcha= captchaValidationAndLogin(recaptchaResponse, request);
        /*System.out.println(
                "Captcha value after 3 login attempts:"+captcha);*/
    }

0 个答案:

没有答案
相关问题