【发布时间】:2019-10-10 17:43:51
【问题描述】:
我已经按照这个问题的答案[问题]How to implement reCaptcha V3 in ASP.NET
对控制器来说一切都很好。我收到一个错误,它“在当前上下文中不存在。我的控制器操作中是否缺少某些内容?
ViewModel -
public class LoginViewModel
{
[Required]
[Display(Name = "User Name")]
public string UserName { get; set; }
[Required]
[DataType(DataType.Password)]
[Display(Name = "Password")]
public string Password { get; set; }
[Display(Name = "Remember me?")]
public bool RememberMe { get; set; }
public static bool ReCaptchaPassed(string gRecaptchaResponse)
{
HttpClient httpClient = new HttpClient();
var res = httpClient.GetAsync($"https://www.google.com/recaptcha/api/siteverify?secret=My-Secret-Key no quotes&response={gRecaptchaResponse}").Result;
if (res.StatusCode != HttpStatusCode.OK)
return false;
string JSONres = res.Content.ReadAsStringAsync().Result;
dynamic JSONdata = JObject.Parse(JSONres);
if (JSONdata.success != "true")
return false;
return true;
}
}
登录后异步 -
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Login(LoginViewModel model, string returnUrl)
{
//if (!ModelState.IsValid)
//{
// return View(model);
//}
if (!ModelState.IsValid) return View(model);
else
{
if (!ReCaptchaPassed(Request.Form["BestenReCaptcha"]))
{
ModelState.AddModelError(string.Empty, "You failed the CAPTCHA.");
return View();
}
}
/// Other actions ///
}
错误 - 当前上下文中不存在名称“ReCaptchaPassed”
我必须遗漏一些东西,答案被标记为修复,没有其他人发布他们对此有问题。我会在那里问它,但是问题是一个较旧的问题。感谢您的帮助!
【问题讨论】:
-
Request.Form["BestenReCaptcha"]) 是一个字符串对象吗?
-
这是调用方法的上下文。对你来说,它会是
LoginViewModel.RecaptchaPassed(...)。 -
@Jasen 这行得通,我真的不敢相信我没有想到这一点……我猜是脑子放屁!感谢您的帮助!
-
在侧节点上,模型中的函数不是标准的,应该避免。
标签: c# asp.net-mvc recaptcha