Ana içeriğe atla

ASP.NET MVC ile Cookie Kullanımı

Merhaba Arkadaşlar, Şubat ayı itibari ile ASP.NET MVC üzerine yazılar paylaşacağız. Yaklaşık 10-13 tane MVC serisi yapmayı planlıyorum. Kendi çalışmalarımda kullandığım bazı kavramları burada paylaşıyor olacağım.

 

Bu hafta Cookie yönetimi üzerinde yoğunlaşacağız. Türkçe olarak çerez şeklinde lanse edebiliriz bu terimi. Web programlamada çok fazla kullanılmaktadır. Client(istemci)'ın bilgisayarına gönderilen bilgi dosyalarıdır ve yazılım tarafından belirlenen koşullarda saklanır gerektiğinde kullanılmak üzere. Cookie'nin hem iyi hem de kötü kullanım örnekleri vardır. Mesela, bir login sisteminde parolanızın otomatik olarak hatırlanması ya da login durumda bulunduğumuz bir sayfayı kapadığımızda ve açtığımızda tekrar otomatik olarak login durumda bulunmamız iyiye kullanım örneğidir.

 

Kötüye kullanım ise, bazı web siteleri bilgisayarınıza 1 yıllık cookie'ler(çerezler) gönderebilir ve bu süre zarfında sizin hangi internet sitelerini girdiğinizi ilgi duyduğunuz alanları vs. gibi istatistiki bilgiler elde edebilir. Benim tavsiyem çerezlerinizi bir arkaplan job'ı ile düzenli aralıklarla temizlemeniz. Bunun için Powershell kullanabilirsiniz. Bkz. Powershell ile Cookie Temizliği.

 

Bu yazıda, bir login sisteminde Cookie nasıl kullanılır ve nasıl programlanır onu inceleyeceğiz.Controller'da ilk önce aşağıdaki gibi bir Login ActionResult ekliyoruz. Buradaki "Request.Cookies["LoginData"] != null" bloğu ile kullanıcı eğer login olabildiyse onu index sayfasına gönderiyoruz.

public ActionResult Login()

    {
        if (Request.Cookies["LoginData"] != null)
        {

            return RedirectToAction("index");

        }

        return View();
    }

Tabi asıl olay Post Action Login'de olacaktır. Üst adımda oluşturduğumuz Login ActionResult'ın altına aynı isimde yalnız başında HttpPost şeklinde bir metod bulunan bir ActionResult daha oluşturuyoruz. Bu bizim Login olmak için ilgili modeli göndereceğimiz metoddur.  Eğer kullanıcı doğru kullanıcı adı ve şifreyi girerse yani herşey modelin yapısına uygun olarak girilirse aşağıdaki blok çalışacaktır.

Session["UserName"] = CustomerUser.UserName;
    HttpCookie LoginCookie = new HttpCookie("LoginData");
    LoginCookie.Values.Add("UserName", CustomerUser.UserName);
    LoginCookie.Values.Add("Pass", CustomerUser.UserPass);
    LoginCookie.Expires = DateTime.Now.AddDays(1);
    Response.Cookies.Add(LoginCookie);
    

Burada LoginData isminde HttpCookie nesnesi oluşturulur. Bu işlemden sonra UserName ve Pass şeklinde iki adet alan create edilirken, içine kullanıcının adı ve parolası atanır. Son olarakta Bu oluşturulan Cookie'nin son kullanma tarihi atanır. Bu örnekte bu Cookie 1 gün sonra silinecektir.

 1
    2
    3
    4
    5
    6
    7
    8
    9
   10
   11
   12
   13
   14
   15
   16
   17
   18
   19
   20
   21
   22
   23
   24
   25
     [HttpPost]
           public ActionResult Login(LoginModel CustomerUser)
   
           {
               Customer Customer = new Customer();
               if (CustomerUser.UserName != null && CustomerUser.UserPass != null)
               {
                   Customer = db.Customers.FirstOrDefault(c => c.CustomerName == CustomerUser.UserName && c.CustomerPass == CustomerUser.UserPass);
                   if (Customer == null)
                   {
                       ModelState.AddModelError("", "Böyle bir kullanıcı ve parola eşleşmesi bulunamadı.");
                   }
               }
               if (ModelState.IsValid)
               {
                   Session["UserName"] = CustomerUser.UserName;
                   HttpCookie LoginCookie = new HttpCookie("LoginData");
                   LoginCookie.Values.Add("UserName", CustomerUser.UserName);
                   LoginCookie.Values.Add("Pass", CustomerUser.UserPass);
                   LoginCookie.Expires = DateTime.Now.AddDays(1);
                   Response.Cookies.Add(LoginCookie);
                   return RedirectToAction("Index");
               }
               return View();
           }
   

Projenin tam halini isteyen olursa paylaşabilirim. demirhuseyinn.94@gmail adresine mail atmanız yeterli.

Yorumlar

Bu blogdaki popüler yayınlar

ASP.NET Core ile Visual Studio Code Ortamında Web API Geliştirmek

Merhaba Arkadaşlar, Önceki yazılarımızda MVC ile Web Programlama üzerine çalışmalar yapmıştık. Bu yazımda herkesin aklında bir fikir ve önbilgi oluşturmak adına MVC yapısından farklı olarak Web API konusuna giriş yapacağız. MVC yazılarına bu hafta devam etmedik çünkü MVC'ye devam ettikçe bazı kavramlar ve işlemler API ile daha kolay çözülebileceğini fark edeceksiniz. Bunu fark etmeniz için araya hem bir Web API yazısı koymuş olduk hem de .NET Core 2.0 ve Visual Studio Code ortamlarını tanımış olduk. Herşeyi ezbere bilmek zorunda değiliz ama en azından bazı kavramlar aklımızda yer etmeli bir önbilgimiz olmalı. Uzmanlığımız dışında bile olsa farklı konularda az da olsa bilgimiz olmalı ve gerektiğinde kendimizi farklı bir alanda diğer kişilerden daha hızlı uzmanlık kazanacak konuma getirmeliyiz :) Benim yorumlarım bu şekilde. Konumuza başlayacak olursak .NET Core nedir kısaca özetlemek gerekecek. Microsoft’un öncelikle IIS üzerinde PHP dosyalarının çalıştırılabilmesi daha ...

Powershell ile Web Tarayıcı Cookie Temizliği

Web tarayıcıların ürettiği cookie ve minik boyuttaki veriler uzun bi süre temizlenmediği durumda yüksek boyutlara ulaşabilir ve bilgisayarımızın performansını kötü etkileyebilir. Bu tarz cookie temizliği ve yönetimi işlemlerinin periyodik olarak yapılması bilgisayarımızın performansı arttıracak ve disk alanı üzerinde bize bir miktarda olsa yer kazandıracaktır. Bu tarz işlemleri yapan programlar internette mevcut ancak bazılarının güvenilirliği tartışılır ve cookie temizliği işlemini periyodik olarak yapmıyor. Powershell ile arkaplan işlerini ve browser yönetimi özelliklerini kullanarak cookie yönetimini ve temizliğini periyodik olarak gerçekleştirmek mümkün. Bu sayede hem güvenlik konusunda hem de işlevsellik konusunda kullanıcı dostu bir modül yapmak mümkündür. Aşağıdaki powershell komutları browser üzerindeki cookie temizliği işlemini yapmaktadır. Not: Cookie Temizleme işlemini yapan fonksiyon aşağıdaki github projesinden alıntıdır. Bu scriptin üzerine birkaç ekl...

SQL Server Sorgu İyileştirme Çalışması

Performans Ölçüm Kriterleri Bu makale ile SQL Server üzerinde çalışan query'lerin optimize edilmesi için gerekli olan ilk aşama maddeleri ve çözümleri işlenmektedir. Veritabanı üzerinde koşan sorguların optimize edilmesi bu maddeler ile sınırlı olmayıp ayrı bir başlık altında incelenmektedir. Bu makale  konu hakkında sağlam bir temel ve ön fikir edinmek isteyenler için güzel bir kaynak olacaktır. SQL Server üzerinde çalışmakta olan bir sorgunun performans iyileştirme işlemleri için ilk etapta dikkat ve kontrol edilmesi gereken bazı maddeler vardır.  Performans Analizi Kontrol Maddeleri 1.       İlgili T-SQL çalıştırılmadan önce Time ve IO İstatistikleri ON Mode'a alınmalıdır. Bu istatistiklerin açılması ile çalışan T-SQL'in çalışma süresinin detayı(CPU ve Other Time) ve sorguda çalışan tablolar üzerindeki IO istatistiklerinin detayı tespit edilebilir duruma gelmektedir. SET STATISTICS TIME ON SET STATISTICS IO ON SELECT c....