首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用asp.net发布谷歌reCAPTCHA的回复?

如何使用asp.net发布谷歌reCAPTCHA的回复?
EN

Stack Overflow用户
提问于 2018-06-09 03:55:46
回答 1查看 1.7K关注 0票数 0

我想在asp.net中检查来自谷歌的reCaptcha答案。如果客户没有选择“我不是机器人”,表单将不会提交。我用C#写了下面的代码,但它不能像预期的那样工作。有人能帮我吗?

代码语言:javascript
复制
public class ReCaptchaClass{
public static string Validate(string EncodedResponse)
{
    var client = new System.Net.WebClient();


    string PrivateKey = "--secret-key--";

    var GoogleReply = client.DownloadString(string.Format("https://www.google.com/recaptcha/api/siteverify?secret={0}&response={1}", PrivateKey, EncodedResponse));

    var captchaResponse = Newtonsoft.Json.JsonConvert.DeserializeObject<ReCaptchaClass>(GoogleReply);

    return captchaResponse.Success.ToLower();
}

[JsonProperty("success")]
public string Success
{
    get { return m_Success; }
    set { m_Success = value; }
}

private string m_Success;
[JsonProperty("error-codes")]
public List<string> ErrorCodes
{
    get { return m_ErrorCodes; }
    set { m_ErrorCodes = value; }
}
private List<string> m_ErrorCodes;
}

我使用下面的字符串来签入:

代码语言:javascript
复制
string EncodedResponse = Request.Form["g-Recaptcha-Response"];
bool IsCaptchaValid = (ReCaptchaClass.Validate(EncodedResponse) == "true" ? true : false);

if (IsCaptchaValid)
{
    //Valid Request
}
EN

回答 1

Stack Overflow用户

发布于 2018-06-09 05:15:39

下面是我在WEB API Controller中使用的代码

代码语言:javascript
复制
    public async Task<IActionResult> SendMessage(string encodedResponse)
    {
        var url = $"https://www.google.com/recaptcha/api/siteverify?secret=--secret-key--&response={encodedResponse}";

        using (var client = new HttpClient())
        {
            using (var response = await client.PostAsync(url, null))
            {
                var json = JObject.Parse(await response.Content.ReadAsStringAsync());

                if (!(bool)json["success"])
                {
                    return Unauthorized();
                }
            }
        }

        // CODE HERE WHEN THE REQUEST IS OK


        return Ok();
    }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50767618

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档