Asp.net MVC Güvenlik Kodu "Captcha" Yapımı

Asp.net MVC ile Kendi Güvenlik Kodumuzu  "Captcha" Kendimiz Yapacağız Bunun için aşağıdaki adımları takip ediniz.

1) ilk önce Models klasöründe bir class oluşturup aşağıdaki kodları yazıyoruz.

 

namespace Captcha_ikslab.com.Models
{
    public class XModel
    {
        public string Email { get; set; }
        public string Mesaj { get; set; }
    }
}

 

2) Bu linkten "SRVTextToImage.dll" adlı dll dosyasını indirip Reference a ekliyoruz

3)Yeni Bir Controller Açıyoruz ve içine aşağıdaki gibi bir action oluşturuyoruz.

 

        [HttpGet]
        [OutputCache(NoStore = true, Duration = 0, VaryByParam = "None")] 
        public FileResult CaptchaImageOlustur()
        {
            CaptchaRandomImage CI = new CaptchaRandomImage();
            this.Session["GuvenlikKodu"] = CI.GetRandomString(5); //Burda güvenlik kodumuzun 5 karekter olması istedik
            CI.GenerateImage(this.Session["GuvenlikKodu"].ToString(), 300, 75, Color.DarkGray, Color.White); 
            //Yukarda Güvenlik resmimizin 300x75 boyutunda olmasını ve yazının koyu gri, arkaplanıda beyaz yaptık
            MemoryStream stream = new MemoryStream();
            CI.Image.Save(stream, ImageFormat.Png);
            stream.Seek(0, SeekOrigin.Begin);
            return new FileStreamResult(stream, "image/png");
        }

 

4)Yeni bir Action açıp view ekliyoruz

 

        public ActionResult Form()
        {
            return View();
        }

 

5)Oluşturduğumuz view aşağıdaki gibi dolduruyoruz

 

@model Captcha_ikslab.com.Models.XModel
    
@{
    ViewBag.Title = "GÜvenli Form";
    Layout = "~/Views/Shared/_Layout.cshtml";
}


@using (Html.BeginForm())
{
    @Html.ValidationSummary(true)
    @Html.AntiForgeryToken()
    <fieldset>
        <legend>Güvenli Form </legend>

        <div class="editor-label">
            @Html.LabelFor(model => model.Email)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Email)
            @Html.ValidationMessageFor(model => model.Email)
        </div>

        <div class="editor-label">
            @Html.LabelFor(model => model.Mesaj)
        </div>
        <div class="editor-field">
            @Html.EditorFor(model => model.Mesaj)
            @Html.ValidationMessageFor(model => model.Mesaj)
        </div>
        <div class="editor-label">
            Güvenlik Kodu
        </div>
        <div class="editor-field">
            <img src="@Url.Action("CaptchaImageOlustur","Captcha")" />
        </div>
        <div class="editor-field">
            <input type="text" name="GuvenlikKodu" id="GuvenlikKodu" value="@ViewBag.GuvenlikKodu" />
        </div>
        <p>
            <input type="submit" value="Gönder" />
        </p>
        <div>
            @if (ViewBag.bildirim != null)
            {
                <div style="border: 1px solid red; width:300px;padding: 5px;">
                    @ViewBag.bildirim
                </div>
            }
        </div>
    </fieldset>
}

@section Scripts {
    @Scripts.Render("~/bundles/jqueryval")
}

 

6) Daha sonra post için bir action daha oluşturuyoruz.

 

[HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult Form(XModel x, string GuvenlikKodu)
        {
            if (this.Session["GuvenlikKodu"].ToString() == GuvenlikKodu)
            {
                ViewBag.bildirim = "Güvenlik Kodu Doğru";
                //Güvenlik Kodu Doğru ise yapılacak işlemler
            }
            else
            {
                ViewBag.bildirim = "Güvenlik Kodu Yanlış!";
                //Güvenlik Kodu Yanlış ise yapılacak işlemler
            }
            return View(x);
        }

 

Ve güvenlik kodunuz tamamdır...

 

Projeyi indirmek için tıklayın.


Etiketler : asp.net mvc Güvenlik kodu Captcha

  • Mehmet A
  • 15.09.2017 23:26:30
  • 0 Yorum
  • 6374 Okunma

Henüz yorum yapılmamış ilk yorumu siz yapabilirsiniz.


  • Yeni Yüklenenler

  • C# textbox autocomplete
    C# textbox autocomplete "otomatik tamamlama" textbox a girilen değirin otomatik tamamlaması
  • İlişkisel Cebir
    İlişkisel cebir (Relational Algebra) biçimsel bir sorgu dili olarak tanımlanabilir.
  • Fiziksel Veri Tabanı Modellemesi
    Fiziksel veritabanı nedir? Fiziksel veritabanı fiziksel tasarımının mantıksal yapısı.
  • Veritabanı Kavramsal Tasarımı
    Veritabanı tasarım safhalarında gösterildiği gibi ihtiyaçlar analizini takip eder ve veritabanında tutulacak olan verilerin yüksek seviyede bir gösterimini verir.
  • Veritabanı Mimarileri
    Veritabanlarının mimari yapıları ve özellikleri.