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 MVC ile Entity Framework Kullanımı 3(Sum-Average-Top)

Merhaba Arkadaşlar, ASP.NET MVC ile Entity Framework kullanımı yazılarımıza devam ediyoruz. Geçen yazılarımızda Select ve Insert işlemlerini tanıtmıştık kısaca. Bu yazımızda ise,Entity Framework ile daha profesyonel ve advanced select operasyonları üzerinde çalışmalar yapacağız. Veritabanı üzerinde,iş biriminin istekleri basit select sorgusu ile olmayabiliyor. Bizden çekilen verilerin toplanması,ortalanmasının alınması ve ilk "x" kayıdın çekilmesini talep edebiliyorlar. Bu nedenle bu hafta Entity Framework ile Select operasyonlarında gruplama,sıralama ve top konularını inceleyeceğiz. Entity Framework İle Sum Kullanımı Bazen elde edilen verilerden toplam operasyonu gerekmektedir. Bu tarz durumlarda,SUM özelliğini kullanmaktayız. İlk etapta, GetTotalRate isminde integer değer geri veren bir fonksiyon oluşturduk. Daha sonrasında ise ToplamRate isimli değişkenimize EmployeePayHistories tablosunda Rate alanlarının toplam değerini hesaplatıp sonucu atadık. En s...

Powershell ile Windows Restart Kontrolü

Powershell ile Windows üzerinde birçok işlemi daha kolay ve daha kısa sürede yapabilmek mümkündür.  Microsoft, PowerShell'i "görev tabanlı .NET Framework üzerine inşa edilmiş komut satırı shell'i ve komut dizesi olarak tanımlıyor. Powershell'in avantajlarını ise aşağıdaki maddeler ile özetlemek mümkündür. Powershell hem command-line olarak hemde bir scripting language olarak çalışmaktadır. Powershell baş döndürücü sayıda teknolojiyle etkileşim kurabilir.(.NET Framework, the Registry, COM, WMI, ADSI. Exchange, Sharepoint, Systems Center, Hyper-V, SQL.  VMware vCenter , Cisco UCS, Citrix XenApp and XenDesktop. REST APIs, XML, CSV, JSON ...) Powershell nesne tabanlıdır.(Object-Oriented) Bilgisayarımızda ya da sunucumuzda zaman zaman yüklediğimiz programlar ve patchler sonucunda restart işlemi gerekebilir ve bu restart işlemi gerekip gerekmediğini tespit etmek için Powersehell kullanılabilir.  Aynı anda 100 sunucuda bunu öğre...

ASP.NET MVC ile Entity Framewok Kullanımı 1

Merhaba Arkadaşlar, Bu yazımızda ASP.NET MVC Web Programlamada çok fazla kullanılan ve çok popüler bir paket olan Entity Framework paketini inceleyeceğiz. Entity Framework paketi, .NET altyapısı ile veritabanı programlama yapanlar için kullanımı kolay ve çok esnek bir pakettir. Entity Framework ile veritabanı üzerinde SELECT,INSERT,DELETE ve UPDATE gibi işlemleri yapabiliriz. Bunun yanında veritabanı üzerinde oluşturulmuş olan stored procedureleri çalıştırabiliriz. Peki progr amcılar neden Entity Framework tercih ediyor ? Performans, işlem çeşitliliği ve kodun okunurluğunun artması gibi sebeplerden ötürü tercih edilmektedir. Entity Framework paketini kullanmadan önce bu paketi projemize yüklemeliyiz. Bunun için Nuget Manager kullanarak yükleme işlemini yapmamız gerekiyor.  Projemizin seçeneneklerinde Manage Nuget Packages seçeneği ile paket yöneticisini açıyoruz(Resim 1). Daha sonrasında, Entity Framework kelimesini aratıyoruz ve install ediyoruz(Resim 2). Resim 1 ...