package me.test;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
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 org.springframework.web.client.RestTemplate;
@Controller
@RequestMapping(value = "/recaptcha")
public class ReCaptchaController {
private Logger logger = LoggerFactory.getLogger(ReCaptchaController.class);
@Resource
private RestTemplate restTemplate;
@RequestMapping(value = "/", method = { RequestMethod.POST })
@ResponseBody
public ResponseEntity<? extends Object> verify(
HttpServletRequest req,
@RequestParam(value = "recaptcha_challenge_field") String challengeKey,
@RequestParam(value = "recaptcha_response_field") String answer) {
MultiValueMap<String, String> request = new LinkedMultiValueMap<String, String>();
request.set("privatekey", "6Le098kSAAAAAIvst-QpKIxqkUpITQd7aKtLSgMQ");
request.set("remoteip", req.getRemoteAddr());
request.set("challenge", challengeKey);
request.set("response", answer);
logger.debug("==============" + req.getRemoteAddr());
logger.debug("==============req = " + request);
String resultStr = restTemplate.postForObject("http://www.google.com/recaptcha/api/verify",
request, String.class);
String[] results = resultStr.split("\n");
if ("true".equals(results[0])) {
return new ResponseEntity<String>(Boolean.TRUE.toString(), HttpStatus.OK);
} else {
logger.debug(resultStr);
return new ResponseEntity<String>(Boolean.FALSE.toString(), HttpStatus.OK);
}
}
}