MVC yapısı kullanarak oluşturmuş olduğunuz bir web uygulamasında iletişim formu ya da çeşitli formlar bulunuyor olabilir. Bu formlara reCaptcha eklemediğiniz taktirde bot veya kötü niyetli kullanıcılar tarafından formunuz gereksiz yere çok kullanılmaktadır. Bu durum boşuna sunucularınızı yoracaktır. Bu sebepten dolayı kullanıcının robot mu insan mı olduğunu anlamak için reCaptcha kullanımı ben her ne kadar sinir olsam da şimdilik en geçerli yöntemdir. MVC reCaptcha kullanımı işinize yarayacaktır bu sebepten dolayı bu yazıda nasıl yapacağımıza bakalım.
İlk olarak Google reCaptcha web sitesini ziyaret edelim ve Google üyeliğimiz ile web sitede oturum açalım. Ardından karşımıza çıkan formu doldurarak reCaptcha kullanmak istediğimiz web siteyi ekleyelim.
Burada dikkat etmeniz gereken olay reCAPTCHA s2 seçip “Robot değilim” Onay Kutusu demeniz gerekmektedir. Eğer bu şekilde yapmazsanız Site sahibinin görmesi gereken HATA: Geçersiz anahtar türü reCAPTCHA hatası alırsınız.
Kayıt işlemi tamamlandığında sistem size site anahtarı ve gizli anahtar olmak üzere 2 adet anahtar vermektedir. Bu anahtarları bir yere not edin.
<script src='https://www.google.com/recaptcha/api.js'></script>
Yukarıdaki kodu MVC projenizin paylaşılan tasarım (shared layout) kodları içerisinde </head> etiketinden önceye gelecek şekilde ekleyin.
<div class="g-recaptcha" data-sitekey="KEY"></div>
Yukarıdaki kodu da formun son kısmına (captchayı göstermek istediğiniz yere) eklemeniz gerekmektedir. Bu ekleme işlemi sırasında KEY yazılı yere kendi anahtarınızı koymanız gerekmektedir.
Formun bulunduğu viewın bağlı olduğu controllera şu şekilde bir sınıf ekleyelim:
public class CaptchaResult
{
[JsonProperty("success")]
public bool Success { get; set; }
[JsonProperty("error-codes")]
public List<string> ErrorCodes { get; set; }
}
Controller içerisinde formdan gelen sonuca göre işlem yaparken captcha sonucunu artık kontrol edeceğiz:
var captcha = Request.Form["g-recaptcha-response"];
const string secret = "GİZLİ ANAHTAR";
var restUrl = string.Format("https://www.google.com/recaptcha/api/siteverify?secret={0}&response={1}", secret, captcha);
WebRequest req = WebRequest.Create(restUrl);
HttpWebResponse resp = req.GetResponse() as HttpWebResponse;
JsonSerializer serializer = new JsonSerializer();
CaptchaResult result = null;
using (var reader = new StreamReader(resp.GetResponseStream()))
{
string resultObject = reader.ReadToEnd();
result = JsonConvert.DeserializeObject<CaptchaResult>(resultObject);
}
if (result.Success)
{
Localhost, bu site anahtarı için desteklenen alanlar listesinde yok. hatası alıyorsanız bilin ki doğru yoldasınız. reCaptcha oluştururken alan adı listesine alan adımızı ekledik ancak localhostu eklemedik bu sebepten dolayı localhostta reCaptcha çalışmayacaktır. Projeyi derleyip yayımladığınız zaman proje çalışacaktır.
Çocukluğumdan beri arabalara olan ilgim babam sayesinde başlamıştır. Araba manyağı seviyesinde bir ilgim var ancak bunu her ortamda dile getirmem. Teknolojiye ve bilgisayara olan ilgim kendimi tanımaya başladım başlayalı oldu. Şimdi ise kendimce kod yazabilen bir bilgisayar mühendisi olarak çalışıyorum.
2022 yılı içerisinde Apple yenilenen iPad modellerini karşımıza çıkarttı. Ancak hepimizin beklediği iPad modeli 2022… Daha fazla oku
Günümüz şartlarında neredeyse her Apple ürünü iCloud Etkinleştirme kilidi özelliğine sahiptir. Bu kilit bir çok… Daha fazla oku
Apple sattığı cihazlardan para kazandığı kadar servisleri ile de para kazanan bir firma olmuştur. Son… Daha fazla oku
Elmadan haberler 3 içerisindeki gündem şu şekildedir: Apple TV Android Akıllı Cep Telefonu ve Tabletlere… Daha fazla oku
iPhone Güncelleme sonrası pil sağlığı neden düşer son derece fazla aldığım diğer bir sorudur. Bu… Daha fazla oku
Bilinçli iPhone Kullanıcısı video serisi kapsamında iPhone iOS 16.2 ipuçları bu yazıda ele alacağım bir… Daha fazla oku
Bu web site kullanıcı deneyimini arttırmak amacı ile çerezleri kullanmaktadır