java - 在 Play 2.x Java 上集成 reCaptcha

标签 java playframework playframework-2.0 recaptcha

我正在尝试在我的 java Play 2.4 Web 应用程序上实现 reCaptcha。

我真的不知道如何读取验证码发送后的“g-recaptcha-response”。

不幸的是,我能找到的所有关于 play 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 API 来验证 recaptcha/g-recaptcha-response 值。

@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
  }
  ...
}

关于java - 在 Play 2.x Java 上集成 reCaptcha,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35889313/

相关文章:

java - 如何在 TreeTable 的第二列中显示树线

java - Junit 用于可运行类和队列

scala - 为什么我们需要隐式应用程序

JAVA:如何打印我的信用卡对象的内容,而不是地址? (我正在打印引用地址)

java - 循环向 "Number[]"添加一个数字

java - 如何在 PHP 前端中使用 play 框架 (play-2.2.3) 提供的 CSRF token ?

java - 玩2.4 HikariCP连接池配置

java - 通过从请求绑定(bind)创建正在运行的表单

java - 在 Play 开发和生产模式下访问文件

linux - Enctype ="multipart/form-data"在 linux 环境下不工作?