Asp.net Kullanıcı Girişi ve Session Kullanımı (Veritabanı)
Asp.net Kullanıcı Girişi ve Session Kullanımı

Bu makalemizde asp.net kullanıcı girişi yapmayı ve kullanıcı yönetimi için kullanılan asp.net session kullanımı hakkında bilgiler ve kaynak kodları paylaşacağız. Kullanıcı girişi (yada yönetici), geliştireceğimiz dinamik web siteleri için olmazsa olmaz bir bileşendir. Yetki kontrolünün olmadığı dinamik bir website düşünülemez. Giriş yapan kullanıcının verilerinin tutulduğu asp.net nesneside sessionlardır.

Anlatımımız süresince örnek bir proje kodlayıp örnek projeyi yine sizinle paylaşacağız. MSSQL veritabanında basit bir kullanıcılar tablosu oluşturup, kullanıcı girişi için bu veritabanını kullanacağız. Örnek projemizin senaryosunda kullanıcı girişi yapacak ve giriş yapan kullanıcının bilgilerini session kullanarak kontrol edeceğiz.

Asp.net Session Kullanımı

Session Türkçe’ ye oturum olarak çevrilebilir. Session kullanıcı girişi ve yetkilendirme kontrolü için kullanılan bir nesnedir. Asp.net session kullanımında temelde 3 işlem vardır. Sessiona bilgi aktarmak, sessiondaki bilgiyi kontrol etmek ve session temizlemek.

Asp.net Session Oluşturma

Session nesnesine bilgi aktarmak için kullanılabilecek 2 yöntem vardır. İkiside oldukça basit kullanıma sahip yöntemlerde “SessionAdi” ile tanımladığımız kısım, sessionu çağırma, kontrol etmek gibi işlemlerde kullanacağımız ismi, “Değeri” kısmı ise bu session da tutulan bilgiyi temsil etmektedir.

//Yöntem 1
Session["SessionAdi"] = "Değeri";
//Yöntem 2
Session.Add("SessionAdi","Değeri");

Asp.net Session Kontrolü

Kullanıcının yaptığı girişi kontrol etmek ve duruma göre hareket etmek için basit bir if kontrolü yeterlidir. Eğer session boş ise “KullaniciGirisi.aspx” sayfasına yönlendirme yapılır ki kullanıcı giriş yapabilsin. Eğer session boş değilse kullanıcı karşılanır, ulaşmak istediği sayfaya yönlendirilir gibi çeşitli senaryolar gerçekleştirilebilir.

if (Session["Kullanici"]==null)
    Response.Redirect("KullaniciGirisi.aspx");
else
    Response.Write("Hoşgeldiniz "+Session["Kullanici"].ToString());

Asp.net Session Temizleme

Session temizleme basit bir işlemdir. Session.Abandon() komutu kayıtlı session verilerini temizler. Bu komut kullanıcının sistemden çıkış yapmak istediği senaryoda kullanıldığında tek başına yeterli değildir. Bu komutla birlikte sayfa kullanıcı girişi gerektirmeyen bir sayfaya yönlendirilmelidir. Bunun içinde Response.Redirect() komutu kullanılır.

Asp.net Kullanıcı Girişi Yapma

Kullanıcı girişi için 2 adet sayfa (“KullaniciGirisi.aspx” ve “Default.aspx”) kullanacağız. Kullanıcı girişi yapılmadan “Default.aspx” sayfasının görüntülenmemesini sağlayacağız. Örnek projemiz için Visual Studio üzerinde “File / New / Web Site” yolunu izleyerek yeni bir web site oluşturuyoruz. Daha sonra projemize 2 adet webform ekliyoruz.

Asp.net Kullanıcı Girişi ve Session Kullanımı (Veritabanı)
Asp.net Kullanıcı Girişi ve Session Kullanımı

Projemizde bir adet veritabanı oluşturup, “Kullanıcılar” isminde bir adet tablo oluşturuyoruz. Tablomuzdaki alanlar (“KullaniciAdi” ve “Sifre”) nvarchar(50) tipinde olacak. Daha sonra en az bir tane elle kullanıcı ekleyin.

Kullanıcılar tablomuzun SQL kodlaması aşağıdaki gibi olacak.

CREATE TABLE [dbo].[Kullanicilar] (
    [Id]           INT           IDENTITY (1, 1) NOT NULL,
    [KullaniciAdi] NVARCHAR (50) NULL,
    [Sifre]        NVARCHAR (50) NULL,
    PRIMARY KEY CLUSTERED ([Id] ASC));

Default.aspx sayfamızın kullanıcı girişi yapılmadan görüntülenmemesi için sayfanın Page Load olayı içerinde session kontrolü yapacağız. Bunun dışında bu sayfada bir adet linkbutton ile çıkış işlemini gerçekleştireceğiz.

KullanıcıGirisi.aspx sayfamızda 1 adet label (lblBilgi), 2 adet textbox (txtKullaniciAdi, txtSifre) ve 1 adet button (btnGiris) kontrolü kullanacağız. Bunun için gerekli düzenlemeleri yapıp btnGiris kontrolünün click olayı içerisine aşağıdaki kodlamayı yapıyoruz.

        string kullanici = txtKullaniciAdi.Text;
        string sifre = txtSifre.Text;
        SqlConnection baglan = new SqlConnection("Data Source=.;Initial Catalog=KullaniciGirisiVeSessionDB;Integrated Security=True");
        SqlCommand sorgula = new SqlCommand("SELECT * FROM Kullanicilar WHERE KullaniciAdi=@KullaniciAdi AND Sifre=@Sifre", baglan);
        sorgula.Parameters.AddWithValue("@KullaniciAdi", kullanici);
        sorgula.Parameters.AddWithValue("@Sifre", sifre);
        baglan.Open();
        SqlDataReader oku = sorgula.ExecuteReader();
        if (oku.Read())
        {   Session["Kullanici"] = oku["KullaniciAdi"].ToString();
            Response.Redirect("Default.aspx");}
        else
            lblBilgi.Text = "Kullanıcı adı yada şifre hatalı!";
        oku.Close();
        baglan.Close();
        baglan.Dispose();

Kodlamamızdaki ilk 2 satırda kullanıcının girmiş olduğu bilgileri textbox üzerinden alıp string türünden değişkenlere aktardık. Daha sonra SqlConnection nesnesi ile veritabanı bağlantımızı, SqlCommand nesnesi ile sorgu cümlemizi tanımladık. Kullanıcının verdiği bilgileri parametre olarak sorgumuza dahil ettik. Sorgumuzun sonucunda gelen yanıtı SqlDataReader nesnesine (oku isminde) aktardık. Sql nesneleri ile ilgili ayrıntılı bilgileri daha önceki  asp.net veritabanı işlemleri başlıklı makalemizde vermiştik, linke tıklayıp daha fazla bilgi alabilirsiniz.

İf koşulu ile veritabanından gelen yanıtın boş olup olmadığını (Read() oluyorsa kullanıcı ve şifre doğru demektir) kontrol ettik. Eğer bilgiler doğru ise gelen veriyi (oku[“KullaniciAdi”].ToString()) tanımladığımız sessiona aktardık. Daha sonrada Default.aspx sayfamıza yönlendirdik. Else durumu içerisinde ise kullanıcı adı yada şifrenin (yada ikisininde) yanlış olduğu durumu kontrol altına aldık.

Asp.net kullanıcı girişi ve session kullanımı makalemizin sonuna geldik. Örnek projemizi indirmek için buraya tıklayabilirsiniz. Kullanıcı girişi yada session kullanımı ile ilgili sormak istediklerinizi aşağıdaki yorum bölümünden iletebilirsiniz.

3 YORUMLAR

  1. response redirect yaptıgımız zaman yönlendirdiğimiz sayfaya mı bağlı kalıyor oturumumuz?
    eğer öyleyse bu durumdan nasıl kurtulabiliriz

  2. Hocam ben veritabanıma “yetki” diye bir alan daha ekledim. Kullanıcı girişi gercekleştikten sonra, eğer kullanıcının yetkisi “1” ise admin.aspx’e değil ise index.aspx’e yönlendirilmesini istiyorum. Nasıl yapabilirim?

    • Yukarıdaki örnek kodda if bloğunun içerisinde bir tane sayfa yönlendirme (Response.Redirect (“Default.aspx”)) kodu var. Bu kısmı silip bahsettiğin yetki kontrolünü yapman gerek. Şu örnek işine yarayabilir:

      if (oku.Read()){
      Session[“Kullanici”] = oku[“KullaniciAdi”].ToString();
      if(oku[“Yetki”].ToString()==”1″)
      Response.Redirect (“admin.aspx”);
      Else
      Response.Redirect (“index.aspx”);
      }

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz