Saltar al contenido

Implementación ASP.NET MVC CAPTCHA

Solución:

Use NuGet e instale Recaptcha para .NET (también es compatible con MVC)

http://nuget.org/packages/RecaptchaNet/

La documentación está en el sitio:

http://recaptchanet.codeplex.com/

Hay otros captchas:

http://captchamvc.codeplex.com/

EDITAR:

Este proyecto se ha trasladado a GitHub https://github.com/tanveery/recaptcha-net

NuGet Google reCAPTCHA V2 para MVC 4 y 5

  • Paquete NuGet
  • Demo y documento

Web.config En la sección appSettings de su archivo web.config, agregue las claves de la siguiente manera:

<appSettings>
   <add name="reCaptchaPublicKey" value="Your site key" />
   <add name="reCaptchaPrivateKey" value="Your secret key" />
</appSettings>

Agregue Recaptcha en su vista.

@using reCAPTCHA.MVC
@using (Html.BeginForm())
{
    @Html.Recaptcha()
    @Html.ValidationMessage("ReCaptcha")
    <input type="submit" value="Register" />
}

Verificando la respuesta del usuario.

[HttpPost]
[CaptchaValidator]
public ActionResult Index(RegisterModel registerModel, bool captchaValid)
{
    if (ModelState.IsValid)
    {
    }
    return View(registerModel);
}

EDITAR:

También debe agregar esto en la etiqueta de su cabeza o es posible que vea un captcha incorrecto

<script src="https://www.google.com/recaptcha/api.js" async defer></script>

En primer lugar, parece que está mezclando ASP.NET estándar y ASP.NET MVC. Si desea hacer MVC, la forma estándar de hacerlo es la Html.TextBoxFor() tipo de cosas, y luego maneja el valor de eso en un método de acción del controlador en lugar de escribir algo en línea en la página. Entonces tienes algo como esto:

Page.aspx
<rhcap:Captcha ID="Captcha1" runat="server"></rhcap:Captcha>
<%= Html.TextBoxFor(m => m.UserCaptcha) %>

y luego en:

SomeController.cs

[HttpGet]
public ActionResult Page()
{
    // generate captcha code here
    ControllerContext.HttpContext.Session["Captcha"] = captchaValue;
    return View(new PageViewModel());
}

[HttpPost]
public ActionResult Page(PageViewModel model)
{
    if (model.UserCaptcha == ControllerContext.HttpContext.Session["Captcha"])
    {
        // do valid captcha stuff
    }
}

Llevar esto al siguiente nivel sería implementarlo en una FilterAttribute. Pero esto debería funcionar para la mayoría de los usos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *