ボットを取り除くための ReCaptcha を含むかなり標準的な MVC Web サイトの連絡先ページがあります。すべてが完璧に機能しています。サイトにモバイル ページを追加しましたが、可視性の懸念から、現在、モバイル ページのみのコントローラーでの recaptcha 検証を省略したいと考えています。
無効なキャプチャをチェックし、モバイル デバイスでない場合はモデルにエラーを追加し、Catch ブロックでキャッチするため、ローカルではこれは完全に機能します。モバイルがキャプチャを気にしない場合は、モデルを検証してください。
[HttpPost, RecaptchaControlMvc.CaptchaValidator]
[ValidateAntiForgeryToken]
public ActionResult Submit(ContactFormViewModel viewModel, bool captchaValid, string captchaErrorMessage)
{
try
{
if (!captchaValid)
if (!HttpContext.Request.Browser.IsMobileDevice)
ModelState.AddModelError("captcha", captchaErrorMessage);
if (ModelState.IsValid)
{
if (viewModel.Save(viewModel))
return RedirectToAction("Thanks");
}
return View("Create");
}
catch (Exception ex)
{ //. . . error processing
}
上記のように、これは、iPhone、iPad などに設定された Safari UserAgent と、さまざまな電話用の Opera エミュレーターの両方に対してローカルで完璧に機能します。しかし、本番環境にデプロイすると、Submit でエラーが発生し、Captcha エラーが表示されます。私にとって、これは .IsMobileDevice テストが失敗したことを意味します。