在 Play 上集成 reCaptcha 2.x Java

Integrating reCaptcha on Play 2.x Java

我正在尝试在我的 java Play 2.4 网络应用程序上实施 reCaptcha。

发送验证码后,我真的不知道如何阅读"g-recaptcha-response"。

不幸的是,我能找到的所有教程都可以玩 2.x,其中仅适用于 scala。

有人能帮帮我吗?

在您的模板中,您可以在隐藏的表单字段中设置 g-recaptcha-response :

<div class="g-recaptcha" data-sitekey="your_site_key" data-callback="captchaCallback"></div>
<input type="hidden" name="recaptcha" id="recaptcha" />

<script>
  function captchaCallback() {
    document.getElementById("recaptcha").value = document.getElementById("g-recaptcha-response").value;
  }
</script>

在您的表单验证中,您需要通过请求重新验证来验证 recaptcha / g-recaptcha-response 值 API。

@Constraints.Required()
private String recapatcha;

private List<ValidationError> validate() {
  ...
  final JsonNode response = WS.url("recaptcha-verify-endpoint").setQueryParameter("secret", "your secret").setQueryParameter("response", this.recaptcha).post("").get(5000L).asJson();

  if(!response.get("success").booleanValue() && response.has("error-codes"){
    //TODO: Add error according to recaptcha error code
  }
  ...
}