Asp.Net Mvc Projesinde ReCaptcha Kullanımı

Merhabalar bu yazımda herhangi bir projede güvenliği arttırmak için kullanılan googlea ait ReCaptcha apisinin Mvc projemizde nasıl kullanılacağını anlatacağım.

1. Öncelikle reCaptcha.dll dosyasını sitesinden indirin.

2. Projenize reCaptcha.dll dosyasını referans olarak dahil edin.

ReCaptchaReferans

 

 

 

 

 

3. Captcha validasyonun kullanmak için bir Action Filter oluşturun.

public class CaptchaValidatorAttribute : ActionFilterAttribute
    {
        private const string CHALLENGE_FIELD_KEY = "recaptcha_challenge_field";
        private const string RESPONSE_FIELD_KEY = "recaptcha_response_field";
 
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            var captchaChallengeValue = filterContext.HttpContext.Request.Form[CHALLENGE_FIELD_KEY];
            var captchaResponseValue = filterContext.HttpContext.Request.Form[RESPONSE_FIELD_KEY];
            var captchaValidtor = new Recaptcha.RecaptchaValidator
            {
                PrivateKey =  "-- SİZE AİT RECAPTCHA PRİVATE KEY --",
                RemoteIP = filterContext.HttpContext.Request.UserHostAddress,
                Challenge = captchaChallengeValue,
                Response = captchaResponseValue
            };
 
            var recaptchaResponse = captchaValidtor.Validate();
 
            // this will push the result value into a parameter in our Action  
            filterContext.ActionParameters["captchaValid"] = recaptchaResponse.IsValid;
 
            base.OnActionExecuting(filterContext);
        }
    }

4. Form Submit Olduğunda Captcha Validasyonunu Kullanmak için Controllerınızda bir Action Methodu Oluşturun.

[CaptchaValidator]
[AcceptVerbs(HttpVerbs.Post)]
 public ActionResult CreateComment(Int32 id, bool captchaValid)
 {
            if (!captchaValid)
            {
                ModelState.AddModelError("_FORM", "You did not type the verification word correctly. Please try again.");
                return View();
            }
            else
            {
                // If we got this far, something failed, redisplay form
                return View();
            }
        
}

Yukarıdaki oluşturduğumuz Action methoduna daha önce kendimiz oluşturduğumuz CaptchaValidator attribute dahil ettik. Bu attribute, Action Filtere giderek Captchanın doğruluğunu kontrol eder ve CreateCommand isimli Action methodu içindeki captchaValid değerine true veya false bir değer set eder.

5. Bir Html Helper Oluşturun ve Sayfanıza Bu Helperi Render Edin.

public static string GenerateCaptcha(this HtmlHelper helper)
        {
            var captchaControl = new Recaptcha.RecaptchaControl
            {
                ID = "recaptcha",
                Theme = "White",
                PublicKey = "-- RECAPTCHA PUBLİC KEY",
                PrivateKey = "-- RECAPTCHA PRİVATE KEY"
            };
 
            var htmlWriter = new HtmlTextWriter(new StringWriter());
 
            captchaControl.RenderControl(htmlWriter);
 
            return htmlWriter.InnerWriter.ToString();
        }

Şimdi ise View sayfanıza oluşturduğunuz Html Helper’ı render edin.

@Html.Raw(Html.GenerateCaptcha())

Şimdi ise nasıl bir sayfayla karşılaşacağımıza bakalım:

LoginReCaptcha

 

 

 

 

 

 

 

 

 

İşte bu kadar basit. https://www.google.com/recaptcha/admin#whyrecaptcha sitesinden de kendi recaptcha hesabınız için kullanacağınız Private Key ve Public Keyini elde etmeniz gerekmektedir. Şimdiden Kolay Gelsin.

Reklamlar