ASP.net ile Oturum(Session) İşlemleri ve LinQ

ASP.net ile Oturum(Session) Kontrolü

Daha önce PHP Programlama dilinde oturum nedir, nasıl oluşturulur konusuna değinmiştik, yine kısaca açıklayalım.

Kullandığınız birçok uygulamada session mantığını görebilirsiniz. Facebook, Gmail, Hotmail ve Yahoo başta olmak üzere, gezdiğiniz her e-ticaret sitesinde session kullanıldığını söyleyebiliriz. Bu bölümde ağırlıklı olarak ASP.net'de anlatımlarımızı yapsak da, session aslında tüm web dillerinde var. Phyton, ASP.net, Perl gibi dillerde yazım şekillerinde farklılıklar olsa aslında aynı mantıkla kullanabilirsiniz.

 


Yukarıda Outlook e-mail giriş ekranı görülmektedir. Kullanıcı bir defa email ve şifresiyle girdikten sonra farklı sayfaları dolaşacak, sayfalar arasında kullanıcı bilgileri session değişkenleri aracılığı ile taşınacaktır. 


Session(Oturum) ne demektir?
 
Session, Türkçesiyle "oturum nesnesi"; kullanıcının şifresi ve kullanıcı adı ile giriş yaptığı sistemlerde, kullanıcı bilgisinin SESSION nesneleri aracılığıyla sayfalar arasında taşınmasıdır. Session nesneleri tarayıcı kapatıldığında otomatik olarak sonlanırlar. Tarayıcı kapatılmazsa varsayılan süre 20 dakikadır. Bu süre kullanıcı tarafından ayarlanabilir. 




Yukarıda gördüğünüz web form tasarımını yaptıktan sonra kaynak kodu aşağıdaki gibi olmalıdır. Aşağıdaki kodlamada Giriş tuşuna basılınca, kullanıcının girdiği email ve şifre veritabanından LinQ tekniği ile kontrol edilmektedir. İlgili email ve şifre tabloda yoksa lblHataMesaj değerine "Giriş başarısız" varsa lblTamamMesaj'ın değerine "Giriş başarılı" yapıyoruz. Eğer email veya şifre bulunduysa Session değişkenlerini tanımlıyoruz ve kullanıcıyı yönetim panelimize yönlendiriyoruz.

Session değişkeni tanımlamayı aşağıdaki şekilde yapıyoruz.
Session.Add("değişken adı", "değişken değeri");

Şimdi kodların tamamını inceleyebilirsiniz. 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
 
namespace WEBBLOG
{
    public partial class BlogGiris : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            lblTamamMesaj.Text = "";
            lblHataMesaj.Text = "";
        }
 
        
        protected void Button1_Click(object sender, EventArgs e)
        {
            DataClassesBlogDataContext Gir = new DataClassesBlogDataContext();
             tblyazar yazar = (from u in Gir.tblyazars
                                    where u.email.Equals(txtEmail.Text)  && (u.sifre.Equals(txtSifre.Text))
                                      select u).FirstOrDefault();
                       if (yazar == null)
                       {
                           lblHataMesaj.Text="Giriş başarısız";
                           lblTamamMesaj.Text = "";
                       }
                       else
                       {
                           lblTamamMesaj.Text = "Giriş Başarılı";
                           lblHataMesaj.Text = "";
                           Session.Add("YazarAdi", yazar.adi );
                           Session.Add("YazarSoyadi", yazar.soyadi);
                           Session.Add("YazarID", yazar.yazarID);
                           Response.Redirect("yonetimpanel.aspx");
                          
                       }
 
        }
    }
}
 
 
Kullanıcı sisteme girdikten sonra varsayılan Oturum süresi 20 dakikadır, banka web sitelerinde ise bu süre 2-3 dakikaya düşürülmüştür. Session süresi olan 20 dakika boyunca dakika mouse veya klavyeye dokunmazsa otomatik olarak Session değişkenlerinin içeriği boşalır. Biz burada if yapısı ile bir kontrol edeceğiz, eğer Session değişkenlerinin içi boş ise tekrar giriş(login) sayfasına yönlendireceğiz. 

Şimdi email ve şifrenin doğru girilip, yönetimpanel.aspx sayfasına yönlendirildiğini düşünüyoruz. Bu panel sistemini kendi yazdığınız tüm sistemlerde kullanabilirsiniz. Örneğin oguzhantas.com da benzer bir yönetim paneli yapısı kullanılmaktadır.

Aşağıdaki kod satırlarında  yonetimpanel.aspx içinde oturum kontrolü yapıyoruz.
 
            if (Session["YazarID"]==null)
                Response.Redirect("BlogGiris.aspx"); 
 
            Label1.Text = "Hoşgeldiniz "+Session["YazarAdi"]+" "+Session["YazarSoyadi"];


Session(Oturum) Sonlandırma

Son bir işimiz kaldı, oturum değişkenlerinin içeriğini boşaltmak ve oturumu sonlandırmak. Bu işlem için Session.Abondon ve Session.Clear isimli iki metodu çağırıyoruz. 

Şimdi Yeni bir WebForm oluşturup, ismine cikis.aspx verdim ve cikis.aspx.cs dosyasında Page_Load olayına aşağıdaki kodları yazdım.

 protected void Page_Load(object sender, EventArgs e)
{
            Session.Abandon();
            Session.Clear();
            Response.Redirect("BlogGiris.aspx");
}

Gördülüğü gibi ASP.net'de Oturum(Session) nesnelerinin kullanımı oldukça kolay. Burada linQ tekniği ile veritabanından sorguladık, siz standart ADO.net veritabanı bağlantısı ile de aynı işlemi yapabilirsiniz.

Mutlu Kodlamalar,
Oğuzhan TAŞ
Nisan, 2015

 

Bookmark and Share