【问题标题】:How to implement Recaptcha V3 for Kentico?如何为 Kentico 实施 Recaptcha V3?
【发布时间】:2020-02-08 13:07:17
【问题描述】:

我们将为我们的网站应用 Recaptcha V3。但 Kentico 仅支持 V2。

那么有什么文件或指南可以做吗?

或者我们应该继续使用 V2 吗?

谢谢, 德黄

【问题讨论】:

  • 您使用的是哪个版本的 Kentico?
  • 我们的网站使用 Kentico 10,11,12 运行

标签: kentico recaptcha-v3


【解决方案1】:

我通过构建自定义代码来呈现 V3 验证码解决了这个问题。

然后我会在保存表单之前检查 reCaptcha Code。

【讨论】:

  • 您好,您是否已在某处发布了您的解决方案?谢谢。
  • @stuzzo 您需要创建一个自定义代码以在保存表单数据之前检查 RecaptCha 3 Validate。要我一步一步给你发吗?
  • 是的,我们将不胜感激。感谢您的帮助。
  • @stuzzo 查看新答案了解详情
  • 感谢杜克的帮助!
【解决方案2】:

步骤如下:

  1. 创建一个类 > 用于验证 ReCaptcha 的函数 - 请参阅附加代码;
  2. 在此事件中调用函数验证:viewBiz_OnBeforeSave 一旦提交表单;
  3. 如果有效则存储信息

您可以通过 Ajax 使用它或直接提交。

public static GooogleRecaptchaResponse ValidateGgRecaptchaToken(string responseToken, Action InvalidHandler) {
    if (string.IsNullOrEmpty(responseToken)) {
        EventLogProvider.LogInformation("ValidateGgRecaptchaToken", "Invalid", "Recaptcha was empty");
        InvalidHandler?.Invoke();
        return null;
    }
    string secretKey = SettingsKeyInfoProvider.GetValue(WebUtils.CaptchaSecretKeyName);
    var request = (HttpWebRequest) WebRequest.Create("https://www.google.com/recaptcha/api/siteverify");

    var postData = "response=" + responseToken;
    postData += "&secret=" + secretKey;
    var data = Encoding.ASCII.GetBytes(postData);

    request.Method = "POST";
    request.ContentType = "application/x-www-form-urlencoded";
    request.ContentLength = data.Length;

    using(var stream = request.GetRequestStream()) {
        stream.Write(data, 0, data.Length);
    }

    var response = (HttpWebResponse) request.GetResponse();

    var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd();
    var res = JsonConvert.DeserializeObject < GooogleRecaptchaResponse > (responseString);
    if (res == null || !res.success || res.score < 0.5) {
        EventLogProvider.LogInformation("ValidateGgRecaptchaToken", "Invalid", JsonConvert.SerializeObject(res));
        InvalidHandler?.Invoke();
    }

    return res;
}

【讨论】:

  • @stuzzo 看这里
  • 感谢您的回复。现在,我会回来做这个任务。您调用 viewBiz_OnBeforeSave 的事件是 CMS.OnlineForms.BizFormItemEvents.Insert.Before?
猜你喜欢
  • 2022-07-16
  • 2019-05-04
  • 2019-09-08
  • 2020-12-22
  • 1970-01-01
  • 1970-01-01
  • 2022-01-19
  • 2021-10-20
  • 2018-10-28
相关资源
最近更新 更多