Проблемы с ReCaptcha в MVC - PullRequest
       20

Проблемы с ReCaptcha в MVC

1 голос
/ 10 октября 2019

Я следовал за ответом на этот вопрос [вопрос] Как реализовать reCaptcha V3 в 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;
    }
}

вход в систему Post Async -

    [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' не существует в текущем контексте

Мне что-то не хватает, ответ помечен как исправление, и никто больше не сообщил, что у него с ним проблемаЯ бы там спросил, но вопрос старый. Спасибо за помощь!

1 Ответ

1 голос
/ 10 октября 2019

Контекст для вызова метода в связанном ответе был того же класса. Поскольку вы вызываете статический метод из другого класса, вы бы назвали его как

LoginViewModel.RecaptchaPassed(Request.Form["BestenReCaptcha"])
...