Asp.Net MVC Cookie ile Beni Hatırla Yapımı

Merhabalar,

Bu yazımızda Mvc ile login ekranının vazgeçilmezi olan  beni hatırla seçeneğinin eklenmesi ve çalıştırılmasını ele alacağız.

Aşağıdaki kodlarda Ana kontrollerdaki index actionı benim login yaptığım ekrandır. Login ekranında email, şifre ve beni hatırla seçeneği mevcuttur. Login ekranı get olduğunda ilk önce çerezimizin olup olmadığını kontrol ediyor çerez varsa çerezdeki bilgileri alıp sessiona atıyor. Çerez yok ise giriş ekranını gösteriyor. İçeriği aşağıdaki gibidir.

public ActionResult Index()
{
if (Request.Cookies["cerezim"] != null)
{
HttpCookie kayitlicerez = Request.Cookies["cerezim"];
Session["eposta"] = kayitlicerez.Values["eposta"];
Session["yetkiid"] = kayitlicerez.Values["yetkiid"];
Session["adsoyad"] = kayitlicerez.Values["adsoyad"];
return RedirectToAction("Panel", "Ana");
}
return View();
}

İndex actionu post olduğunda yani kullanıcı bilgilerini girip giriş yapmaya çalıştığında aşağıdaki kod bloğu çalışacaktır. Aşağıdaki kod bloğunda giriş kontrolü yapıldıktan sonra yeni bir çerez oluşturuluyor ve bilgiler sessiona atılıyor.

[HttpPost]
public ActionResult Index(string Email, string Parola,bool? Benihatirla)
{
var login = db.yonetim.Where(a => a.Email == Email).SingleOrDefault();
if (login == null)
{
ViewBag.uyari = "E-Mail Adresinizi veya Şifrenizi Kontrol Ediniz.";
}
else if (login.Email == Email & login.Sifre == Parola)
{
if(Benihatirla==true)
{
HttpCookie cerez = new HttpCookie("cerezim");
cerez.Values.Add("eposta", Email);
cerez.Values.Add("sifre", Parola);
cerez.Values.Add("yetkiid", login.Yetki);
cerez.Values.Add("adsoyad", login.AdiSoyadi);
cerez.Expires = DateTime.Now.AddDays(30);
Response.Cookies.Add(cerez);
}
Session["yetkiid"] = login.Yetki;
Session["adsoyad"] = login.AdiSoyadi;
return RedirectToAction("Panel", "Ana");
}
else
{
ViewBag.uyari = "E-Mail Adresinizi veya Şifrenizi Kontrol Ediniz";
return View();
}

            return View();
}

Kullanıcı çıkış yapmak istediğinde Logout actionu çalışacaktır. Bu actionda ise çerezdeki session ve ve çerezdeki bilgiler silinerek çıkış işlemi gerçekleştirilecektir.

public ActionResult Logout()
{
Session["yetkiid"] = null;
Session.Abandon();
if (Request.Cookies["cerezim"] != null)
{
Response.Cookies["cerezim"].Expires = DateTime.Now.AddDays(-1);
}
return RedirectToAction("Index", "Ana");
}

Bu yazımız ile Asp.Net Mvc ile cookie oluşturma, cookie tanıma ve cookie silme işlemlerini yüzeysel bir şekilde ele almış olduk.