我遇到了recaptcha v2的一个问题。 我在客户端和服务器端完成了我的代码验证。 但有趣的是我在这个recaptcha 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);*/
}