Asp.NET MVC 4.0 – ReCaptcha Nesnesi

Web site sahiplerinin midesini bulunduran spam saldırıları ve sisteminizi yormak için hackerlar tarafından geliştirilmiş içerik gönderme yazılımlarına önlem amaçlı Recaptcha testi geliştirilmiştir.Bu test oldukça kullanışlı olduğundan dolayı daha sonra Google tarafından satın alınmıştır.Sitenize gelen ziyaretçinin herhangi bir veri kayıt işleminde bulunması esnasında bu test ile insan ya da bot olduğunu ayırt edebiliyor ve işlemleri ona göre tabi tutabiliyorsunuz.Eğer ziyaretçi Recaptcha testini geçemezse yapılacak işlem tetiklenmiyor ve ziyaretçiye uyarı veriliyor.Asp.NET MVC 4.0 mimarisi, oluşturduğumuz sistemlerimizde Recaptcha nesnesini rahatlıkla kullanabilme olanağını tanıyor.

Öncelikle bu nesneyi projenizde kullanabilmeniz için Microsoft Web Helpers Paketini referans olarak eklemeniz gerekmektedir.Bu işlemi Asp.NET MVC – Microsoft Web Helpers Paketi Yüklenmesi başlıklı yazımda nasıl yapabileceğinize önceden değinmiştim.

Recaptcha nesnesini programatik olarak kullanabilmeniz için Google tarafından kayıtlı bir domaininiz olması gerekmektedir.Bu işlem için öncelikle http://www.google.com/recaptcha adresine giderek “Use Recaptcha On Your Site” yazan butona tıklayarak kayıt olmamız gerekmektedir.

Recaptcha

Yukarıdaki resimde gördüğünüz gibi domain adresinizi yazdıktan sonra “Create Key” butonuna tıklayınız.Eğer ki, alt domainlerde Recaptcha kullanılacaksa “Enable this key on all domains (global key)” yazan kutucuğu tıklamanız yeterlidir.

Recaptcha2

Bu işlemler neticesinde yukarıda gördüğünüz gibi bir sayfa gelecektir.Bu sayfadan Public Key ve Private Key kodlarını almış olacağız.Artık kodlamamıza geçebiliriz.

Şimdi MVC projemizde “Home(Controller).cs” adında bir Controller sınıfı açalım.Bu sınıf içerisinde ActionResult tipinden “Index” isimli metodumuzun View katmanındaki “.cshtml” uzantılı sayfasını oluşturalım.

Mantık şu;
Recaptcha testinini kontrol etmek amaçlı bir Action metod oluşturacağız ve Index.cshtml sayfamızda bu Action metodumuz üzerinden işlem yapacağız.

Ben “TestKontrol” isimli bir Action metod oluşturup içini aşağıdaki gibi kodluyorum.

        public ActionResult Index(int? id)
        {
            if (id != null)
            {
                if (id == 1)
                {
                    ViewData["Durum"] = "Doğru";
                }
                else
                {
                    ViewData["Durum"] = "Yanlış";
                }
            }
            return View();
        }

        public ActionResult TestKontrol()
        {
            if (ReCaptcha.Validate(privateKey: "6LerHe***"))
            {
                return RedirectToAction("Index", new { id = 1 });
            }
            return RedirectToAction("Index", new { id = 2 });
        }

Bu metodumuz tetiklendiği anda Recaptcha testimizin Private Key kodunu alarak denetleme yapıyor ve eğer sonuç doğru ise Index Action metodumuza giderek id isimli Route’a 1 değerini, değil ise 2 değerini gönderiyor.Index Action metodumuzda gördüğünüz gibi id parametresini yakalayıp gerekli kontrol işlemlerini gerçekleştiriyoruz ve ona göre ViewData nesnemizde “Durum” isimli değişken oluşturup geriye göndereceğimiz değeri yazıyoruz.

Şimdi testimizi “Index.cshtml” sayfasında görsel olarak uygulamaya geçelim.

@using Microsoft.Web.Helpers
@using (Html.BeginForm("TestKontrol", "Home", FormMethod.Post))
{
    @ReCaptcha.GetHtml(publicKey: "6LerHe***");
    <input type="submit" value="Kontrol Et" />
    if (ViewData["Durum"] != null)
    {
        @ViewData["Durum"]
    }
}

Burada ise “Kontrol Et” isimli buton tetiklendiği anda “Home(Controller).cs” isimli Controller sınıfımızdaki “TestKontrol” isimli Action metodumuza Recaptcha bilgileri Post ediliyor ve denetleniyor.Recaptcha nesnemizin GetHtml metodu ile Public Key kodu girilerek Client bazlı görsel işlem ve kontrol bağlantısı kuruluyor.Gelecek olan sonuç ViewData nesnemizle istenilen alana yazdırılıyor.

Sonuç olarak projemizi derleyip çalıştırdığımızda aşağıdaki görüntü ekrana gelecektir.Oluşturulan karakterleri doğru ya da yanlış yazmanız neticesinde gerekli sonuç ekranda gözükecektir.
Recaptcha3

Bu yazımızında sonuna gelmiş bulunmaktayız.
Faydalanmanız dileğiyle..
Sonraki yazılarımda görüşmek üzere..
İyi çalışmalar..

Bunlar da hoşunuza gidebilir...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*

Copy Protected by Chetan's WP-Copyprotect.