ASP MVCYazılım

Session Nedir ? | Asp Net MVC – 5

Asp Net MVC eğitimlerimiz dahilinde ilk uygulama olarak “Login Form” yapmıştık. Form uygulaması içerisinde “Session” fonksiyonunu kullanmıştık. Form uygulamasını yaptığımız makalemizi okumak için buraya tıklayın. Bugün de Session fonksiyonunun ne olduğunu ve nasıl kullanıldığını inceleyelim.

SESSION NEDİR ?

Türkçe karşılığı “oturum”dur. Bir site ya da uygulamaya giriş yaptığınızda, yaptığınız giriş hafızada tutulur. Böylelikle, üye girişi yaptığınız sayfalarda her seferinde kullanıcı adı ve şifre girmek zorunda kalmazsınız. Hemen hemen bütün yazılımcıların kullandığı yöntemdir. Web sitesinin çalışmasını hızlandırır, kullanıcılara kolaylık sunar. Kullandığınız bir çok sosyal medyasında da kullanılmaktadır. Örneğin Instagram.

Nerelerde kullanılır ?

Instagram uygulamasını ele alarak öğrenelim. Siz instagram uygulamasını indirdikten sonra giriş yapmak için 1 tane hesaba ihtiyaç duyuyorsunuz. Hesabınızı oluşturduktan sonra, kullanıcı adınız ve şifreniz ile giriş yapıyorsunuz.

Hesabınıza giriş yaptıktan sonra, telefonunuz kapansa dahi bir daha sizden şifre istenmez. Instagram uygulamasını açtığınız zaman direk kendi hesabınıza giriş yapabilirsiniz. Herhangi bir şifre veya kullanıcı adı bilginiz istenmez. Çünkü daha önce giriş yaptığınızda giriş bilgilerinizle 1 oturum oluşturulmuş olur.

Neden Kullanılıyor ?

Tahmin edileceği üzere, instagram gibi bir platform milyarlarca kullanıcıya sahip. Herkes girerken sürekli aynı bilgileri girerse, çok fazla zaman kaybı olacaktır. Kullanıcı açısından dezavantaj olacağından, bilgiler session veya Cache ile ön bellekte tutulur.

Telefonunuzdan session veya cache bilgilerinizi silmek isterseniz dikkat etmeniz gerekmektedir. Bir çok web sitesi bu iki fonksiyonun çok fazla kullanmaktadır. Silerken dikkat etmeniz gerekmektedir.

Asp Net MVC Session kullanımı

Asp Net MVC ‘de Session Kullanımı

Bir önceki makalemde sizlere form uygulamasının yazılımını anlatmıştım. Makalemiz dahilinde oluşturduğumuz uygulamada session fonksiyonunu kullanmıştım.

Form uygulamasında kullandığımız oturum fonksiyonu, yalnızca 60dk ile sınırlı olacak şekilde ayarlı. Yani siz form uygulamamızda giriş yaptıktan yaklaşık 60dk sonra session bilgileriniz silinmekte. Tekrar giriş yapmak istediğinizde, kullanıcı adı ve şifrenizi tekrar girmeniz istenmektedir.

Bu süreyi değiştirmek veya sınırsız yapmak, yazılımcıya bağlıdır. Makalemiz dahilinde süreyi 60dk ile sınırlı tutacağız. 1 saatin sonunda tüm veriler silinecek ve kullanıcıdan tekrar bilgileri istenecektir. Böylelikle sunucumuzu fazladan yormak zorunda kalmayacağız.

Visual Studio programının nasıl indirileceğini ve projenin nasıl kurulacağını anlatmıştım. Geliştirmiş olduğum form uygulamamız üzerinden anlatmaya devam edeceğim. Form uygulamasını indirmek için buraya tıklayın.

Session nerede çalışır ?

Kullanıcıların verilerini saklayabilmek için bir depolama alanı gerekiyor. Biz tarayıcı üzerinden çalışmalarımızı yürüteceğimiz için, borwser cache özelliğini kullanacağız. Kod tarafında verileri controller, yani back end tarafında saklayacağız.

Front End kısmında verileri tutmamız doğru olmaz. Kullanıcı giriş yaptığı anda, Session tanımlamamızı controller tarafında saklayıp, projenin istediğimiz noktasında kullanabiliriz.

Login Controller kodlarımız (Sadece session bölümü) | h1

[HttpPost]
        public ActionResult Index(FormCollection form)
        {
            var user_email = form["user_email"].Trim();
            var user_password = form["user_password"].Trim();

            var user_data = db.Users.FirstOrDefault(a => a.Email == user_email.ToString() && a.Password == user_password.ToString());
            if (user_data != null && user_data.Statu == "1")
            {
                Session["user_url"] = user_data.Url.ToString();
                return RedirectToAction("index", "home");
            }
            return View();
        }

Kullanıcı tarafında form gönderildikten sonra, yani Post edildikten sonra, buraya gelecektir. Verilerin varlığı ve veritabanında olup/olmadığı kontrol ediliyor. Hemen peşinden, kullanıcının giriş yetkisi kontrol ediliyor. (user_data.statu=”1″)

Bu adımların detaylı açıklamaları ve daha fazlası burada ki makalemde bulunmaktadır.

Session[“user_url”] = user_data.Url.ToString();

Bu kod parçacığından da anlaşılacağı üzere, fonksiyonumuza kullanıcının url’ini atıyoruz. Kullanıcının url’i ilk kaydı yaparken oluşturulup, veritabanın’a kayıt edilmişti. Burada ise aynı kaydı veri tabanından çekip, fonksiyonumuza atıyoruz.

Fonksiyonun parantezler arasına yazılan değişken’i, projemizde istediğimiz yerde kullanabiliriz. Front end kısmında (.cshtml dosyalarda) kullanabiliriz, tabi burada dikkat etmemiz gereken bir yer var.

Front end tarafında, Back End kodları yazabilmemiz için, @{}@ kodlarını yazmamız gerekiyor. Aksi takdirde Back End kodlarımız, .cshtml tarafında çalışmayacaktır. Hata dönecektir.

mvc session kullanımı teknotower

İndex.cshtml Kodlarımız (Kullanıcı giriş yaptıkta sonra)

@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_HomeLayout.cshtml";
}

<h2><b>@Session["user_url"]  İle Sessionlar tutuluyor.</b></h2>

Kullanıcı verilerini girip gönderdikten sonra, LoginController.cs dosyasında kontrol ediliyor. Kullanıcı mevcutsa verileri fonksiyona aktarılıyor. Ve kullanıcı index.cshtml dosyasına yönlendirilip login işlemleri sonlanıyor.

Bu kısımdan sonra kullanıcı’nın istediğmiz verisini, ister Front End ister Back End alanlarında kullanabilir, çeşitli sorgular yapabiliriz.

index.cshtml kodunda görüldüğü üzere, kullanıcının url bilgisini çekebilmek için, Back End kodları yazabilmek için; “@” fonksiyonunu kullanmak zorundayız. Aksi takdirde bir çok hata ile karşılaşabilir ve fonksiyon çalışmaz.

Buraya Dikkat

Asp net MVC eğitimlerimizin bu bölümünde Session fonksiyonunu anlattım. Ancak makale dahilinde sadece kullanıcının url bilgisini çekitk. Diğer bilgilerini, “Adı, Soyadı, E-mail…” bu bilgilerini nasıl çekeceğiz ?

Front End tarafında, Back End kodlarının nasıl yazılacağını belirttim. Asp Net MVC projelerinde front end tarafında, tabloların içerisinde arama yapabilisiniz. Tablolarınız da arama yaparken, veri tabanında ki url, fonksiyondan gelen url ile eşleşirse, eşleşen kullanıcının istediğiniz verisini çekebilir, değişkene atayabilir ve bulunduğunuz sayfada kullanabilirsiniz.

Belirtmek isterim ki session kullanımı, Asp Net MVC projelerini yavaşlatacaktır. Sunucu tarafında size sorunlar oluşturabilir. Bunun için çok fazla session kullanmamanızı öneririm. Sadece zorunlu alanlarda kullanmak en doğrusu olacaktır.

Algoritmalarınızı ve kodlarınızı bu bilgi ışığında yazmanız, projenizin daha sistematik ve fonksiyonel çalışmasına olanak sağlayacaktır.

Baran Yıldırım

Web yazılımlarına merak salmış, kendisini bu alanda geliştirmekten zevk alan, kaliteli bir kitap okuyucusu. Deniz kenarında okunan kitabın verdiği zevkle çalışan ve Nöro Pazarlama hakkında araştırma yapan, Back End Developer.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu