2012-03-16 19 views
8

MVC3 uygulamamda stackoverflow gibi reCaptcha işlevlerinin nasıl kullanılacağını açıklayan herkes olabilir.MVC3 uygulamasında Google reCaptcha nasıl uygulanır?

Bunu nasıl özelleştirebilirsiniz?

+0

ReCAPTCHA:

Burada bir bal küpü Captcha genel fikri hakkında daha fazla bilgi bulabilirsiniz? http://www.google.com/recaptcha – LukeH

+0

Honeypot ReCaptcha kullanmanız önerilir. Kullanıcılarınızın deneyimi daha iyi. Önceden bir ASP.NET MVC'si var http://nuget.org/packages/SimpleHoneypot.MVC – Paul

+0

@Paul, Honeypot'un nasıl uygulanacağına dair bir örnek var mı? – updev

cevap

30

Google ReCaptcha kullanıyorum ve çok iyi çalışıyor ve uygulanması çok basit. Eğer Google Recaptcha sitede bir hesap oluşturmak ve bir dizi almak gerekir

(şu anda 1.0.5.0) dll geçerli sürümüne sahip olduğunuzdan emin olun Https kullanıyorsanız o

Not özel ve özel anahtarların Web projesi ana web.config dosyasında anahtarlarını ekleyin:

<appSettings> 
    <add key="webpages:Version" value="1.0.0.0"/> 
    <add key="ClientValidationEnabled" value="true"/> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/> 
    <add key="ReCaptchaPrivateKey" value="put your private key value here" /> 
    <add key="ReCaptchaPublicKey" value="put your public key value here" /> 
</appSettings> 

Şimdi Nuget kullanabilir ve sonra .NET

için reCAPTCHA eklentisini yüklemek, sizin GÖRÜNTÜLER klasörün içindeki web.config dosyasına gidin. Bu satırı ekleyin: dosyanızın üstündeki using ifadesi ekleyin, captcha'yı göstermek istiyorum ki görünümünde, Sonra

<namespaces> 
    <add namespace="System.Web.Mvc" /> 
    <add namespace="System.Web.Mvc.Ajax" /> 
    <add namespace="System.Web.Mvc.Html" /> 
    <add namespace="System.Web.Routing" /> 
    <add namespace="Recaptcha"/> 
</namespaces> 

@using Recaptcha; 

sonra görünümünüze bu ekleyin:

Denetleyiciniz eylem olarak
<div class="editor-label"> 
    Are you a human? 
</div> 
<div class="editor-field"> 
    @Html.Raw(Html.GenerateCaptcha("captcha", "clean")) 
    @Html.ValidationMessage("captcha") 
</div> 

Eğer kaptan sonuçlarını kabul imzayı değişiklik yapması gerekir:

[HttpPost] 
[RecaptchaControlMvc.CaptchaValidator] 
public ActionResult ForgotPassword(CheckUsernameViewModel model, bool captchaValid, string captchaErrorMessage) { 
    if (!Membership.EnablePasswordReset) 
     throw new Exception("Password reset is not allowed\r\n"); 
    if(ModelState.IsValid) { 
     if(captchaValid) { 
      return RedirectToAction("AnswerSecurityQuestion", new { username = model.Username }); 
     } 
     ModelState.AddModelError("", captchaErrorMessage); 
    } 
    return View(model); 
} 

Bu adımların ardından, birkaç sayfaya captcha uygulamamı sağladım ve sorunsuz çalışıyor. Kontrolör eylemi parametre adları DOĞRU İSİMLİ OLMALIDIR unutmayın:

bool captchaValid, string captchaErrorMessage 

bu parametre adları değişti Eğer zamanında bir hata alıyorum OLACAK zaman geri denetleyici eylem, form mesajlar.

+0

Genel/özel anahtar değeri nedir? Oraya ne koymalıyım? – updev

+0

@updev - Google'ın ReCaptcha sayfasından kaydolarak şu adresi alırsınız: http://www.google.com/recaptcha/ –

+0

@ cd-smith: MVC4'e Recaptcha ekleme yönergelerinizi uygularken garip bir davranışım var. proje; Kontrolör eylemi, formu doğru bir şekilde verdiğimde iki kez çağrılır, ilk olarak doğru Recaptcha sonuçları ile ve daha sonra hata ile ikinci kez sonuçlanır! Benzer bir şeyle karşılaştın mı? – ThomasWeiss

İlgili konular