Aspnet MVC Cookie Kullanımı

Asp.net MVC de istemci(client) tabanlı durumlarda kullandığımız cookie (çerezi) bu yazımızda örneklerle anlatmaya çalışacağım.

Terimleri kısaca tanımlayım..

İstemci(client) nedir? -Web sayfamızı ziyaret eden kişinin -kullanıcının- cihazıdır.

Çerez(cookie) nedir?

-Önceki yazımızda sessiondan bahsetmiştik session bilgileri sunucu üzerinde tutuyordu. Çerezde session tam tersi olarak istemci tarafında metin dosyasında tutar. Eğer metin dosyası silinmediği -ya da süresi bitmediği- sürece kullanıcı siteyi her ziyaret edişinde cookie (çerez) okuyabiliriz.

Aspnet MVC Cookie Kullanımına göz atalım.

Cookie Oluşturma

HttpCookie() 2 overloadu vardır;

1) -string name;

2) -string name, string value;

HttpCookie cookie= new HttpCookie("Cookiemizin Adı","Cookiemizin Değeri");

Cookiemize yaşam süresi vermek istiyorsak Expires propertysini kullanıyoruz.

cookie.Expries = DateTime.Now.AddDays(1);

cookiemizin yaşam süresini belirlemiş olduk bir gün sonra cookiemiz silinecektir.

Response.Cookies.Add(cookie);

Cookiemizi eklemiş -oluşturmuş- oluyoruz.

Cookie Silme oluşturmuş olduğumuz cookiemizin adını vererek siliyoruz.

Request.Cookies.Remove("Cookiemizin Adı");

Başka bir silme yöntemi ise oluşturmuş olduğumuz cookiemize yaşam süresi  vererek.

cookie.Expries = DateTime.Now.AddDays(-1);

diyerek cookimizide silebiliyoruz.

Cookiedeki Değeri Okuma

Request.Cookies["Cookiemizin Adı"].Value;

Diyerek cookiemizin değerini okuyabiliriz.

Cookie Varlığını Kontrol Etme

Oluşturduğumuz cookie varlığını kontrol etmek istediğimizde;

Request.Cookies["Cookiemizin Adı"] == null ? "Cookiemiz yok": "Cookiemiz var ";

kısa if ile (Ternary opertor) cookiemizi kontroll etmiş olduk buradaki kriterimiz cookie == null mı ?

Basit bir örnek yapacak olursak...

Ziyaretcinin daha önce x sayfalarımıza giriş yapıp yapmadığını kontrol ediceğimiz cookie örneği yapalım..

HomeControllerımızı açıp şu kodları yazıyoruz.

    private void CreateCookie(string name, string value)
    {
        HttpCookie cookieVisitor = new HttpCookie(name, value);
        // cookieVisitor.Expires = DateTime.Now.AddDays(2);
        Response.Cookies.Add(cookieVisitor);
    }
    private string GetCookie(string name)
    {
        //Böyle bir cookie mevcut mu kontrol ediyoruz
        if (Request.Cookies.AllKeys.Contains(name))
        {
            //böyle bir cookie varsa bize geri değeri döndürsün
            return Request.Cookies[name].Value;
        }
        return null;
    }
    private void DeleteCookie(string name)
    {
        //Böyle bir cookie var mı kontrol ediyoruz
        if (GetCookie(name) != null)
        {
            //Varsa cookiemizi temizliyoruz
            Response.Cookies.Remove(name);
            //ya da 
            Response.Cookies[name].Expires = DateTime.Now.AddDays(-1);
        }
    }

Yine HomeControllerımızda sayfalarımızın actionlarını oluşturalım Index ve About sayfalarımız olacak.

    public ActionResult Index()
    {
        //Bulunduğumuz sayfanının actionname ni alıyoruz
        string actionName = this.ControllerContext.RouteData.Values["action"].ToString();
        //böyle bir cookiemiz var mı diye soruyoruz
        if (GetCookie(actionName) == null)
        {
            //yoksa yeni bir cookie oluştuyoruz
            CreateCookie(actionName, "visitor");
        }
        else
        {
            //Ekranda görünmesini sitediğimiz mesajımız
            ViewBag.Message = "Sen daha önce bu sayfayı ziyaret etmişsin :) Tekrar Ziyaretiniz için teşekkür ederiz.";
        }
        return View();
    }

    public ActionResult About()
    {
        //Bulunduğumuz sayfanının actionname ni alıyoruz
        string actionName = this.ControllerContext.RouteData.Values["action"].ToString();
        //böyle bir cookiemiz var mı diye soruyoruz
        if (GetCookie(actionName) == null)
        {
            //yoksa yeni bir cookie oluştuyoruz
            CreateCookie(actionName, "visitor");
        }else
        {
            //Ekranda görünmesini sitediğimiz mesajımız
            ViewBag.Message = "Sen daha önce bu sayfayı ziyaret etmişsin :)";
        }

        return View();
    }

HomeControllarımızda kodlarımızı yazdığımıza sayfamızı derleyip çalıştıralım.

Sayfamızın ilk açıldığındaki ekran görüntüsü (arkaplanda cookiemiz oluşuyor).

Sayfamızı tekrar ziyaret ettiğimizdeki ekran görüntüsü;