我想在asp.net中检查来自谷歌的reCaptcha答案。如果客户没有选择“我不是机器人”,表单将不会提交。我用C#写了下面的代码,但它不能像预期的那样工作。有人能帮我吗?
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;
}
我使用下面的字符串来签入:
string EncodedResponse = Request.Form["g-Recaptcha-Response"];
bool IsCaptchaValid = (ReCaptchaClass.Validate(EncodedResponse) == "true" ? true : false);
if (IsCaptchaValid)
{
//Valid Request
}
发布于 2018-06-09 05:15:39
下面是我在WEB API Controller中使用的代码
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();
}
https://stackoverflow.com/questions/50767618
复制相似问题