Osman KURT

Kendime Not

ASP.Net de Cookies Kullanarak Login Kontrolü Yapma

Asp.net de yapılan çoğu projede kullanıcı kontrolü bu admin paneli de olabilir, kullanımaktadır. Buralar da session dediğimiz olayı kullanabilir fakat hata vermeye müsait bir yapıdır. Sebebi session ölmesidir. Session öldüğünde yapılacak işlemler tamamlanmaz ve hata verir. Bu hatayı sayfayı belli aralıklarla refresh ederek giderebiliriz.

Şimdi anlatacağım olayda ise cookies dediğimiz olayı kullanacağız. Bu web sayfasının bilgisayar localine bir adet dosya atması ile çalışır. Bu dosya adminin ayarladığı süre boyunca localinizde kalır ve siz silmedikçe o müddet dolana kadar işlev görecektir. Bu olay hem daha mantıklı hemde performans açısından daha kullanışlıdır.

Bağlantı classımız;

 

public class baglan
    {
        public static SqlConnection baglanti = new SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=EntityDenemedb;Integrated Security=True");
    }

İlk olarak login.aspx sayfamızı tasarlayalım ve 2 adet textbıox 1 adet buton atayalım sayfaya.Butonun click olayına ise;

 

SqlConnection cnn=new SqlConnection("");
SqlCommand cmd = new SqlCommand("select * from SiteAyarlari", cnn);
if (ConnectionState.Closed == baglan.baglanti.State)
baglan.baglanti.Open();
SqlDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
if (txtKullanici.Text == dr["KullaniciAdi"].ToString() && txtSifre.Text == dr["Sifre"].ToString())
{
HttpCookie myCookie = new HttpCookie("osmankurt");
myCookie["Adı"] = txtKullanici.Text;
myCookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(myCookie);
Response.Redirect("Default.aspx");
}
else
{
Response.Write(alarmVer.msjBox("Hatalı Giriş"));
}
}
dr.Close();
cnn.Close();

 

Şimdi ise default sayfamıza gelelim ve kontrolümüzü yapalım bakalım doğru çalışıyor mu?, çalışmıyor mu?

if (Request.Cookies["osmankurt"] == null)
{
Response.Redirect("Login.aspx");
}

 

Şimdi ise çıkış sayfamızın yapımına geçelim. Bir adet buton atıyoruz ve click olayına alt kısımda ki kodlarımızı yazıyoruz.

Response.Cookies["osmankurt"].Expires = DateTime.Now.AddDays(-1);
Response.Redirect("Login.aspx");

 

Kodlarımız bu kadar arkadaşlar ;

Görüşmek üzere

Osman KURT

Yazılım Geliştirici ve Grafiker

Yorumlar (13) -

  • Mehmet Murat Bozkır

    4.10.2012 13:55:31 | Yanıtla

    if (ConnectionState.Closed == baglan.baglanti.State)
    baglan.baglanti.Open();

    Yukarıda baglan class ını vermemişsiniz ondan dolayı kullanıcak yeni arkadaşlar sıkıntı yaşayabilir.

    Elinize sağlık çok güzel bir makale olmuş.....

    • osmankurt

      5.10.2012 02:35:07 | Yanıtla

      Merhaba Mehmet,
      Önerin için çok teşekkür ederim gereli eklemeyi yaptım. Ayrıca işine yaramasına sevindim.

  • özlem

    17.12.2012 12:40:21 | Yanıtla

    merhaba yazdıgnız kodları denedım ama olmyr hatalar verıyor.mesela sunu gıbı hatalar
    Error  1  class, struct veya interface üyesi bildiriminde geçersiz 'if' belirteci  
    Error  2  class, struct veya interface üyesi bildiriminde geçersiz '==' belirteci  
    Error  3  class, struct veya interface üyesi bildiriminde geçersiz ')' belirteci  
    Error  4  class, struct veya interface üyesi bildiriminde geçersiz '(' belirteci  

    • osmankurt

      18.12.2012 01:38:42 | Yanıtla

      Merhaba Özlem,
      Kodları geçirirken sıkıntı olmuş olabilir çünkü herhangi bir problem yok kodlarda. Tekrar dene istersen. Olmadı örnekli anlatıma geçeriz Laughing

      • özlem

        18.12.2012 13:16:05 | Yanıtla

        tamam saolun ben yaptım baska bır örnekle

        • Mehmet Murat Bozkır

          22.12.2012 17:16:07 | Yanıtla

          1 çift tırnakları tekrar elden geçir bazen editörden farklı gelebiliyor.
          2 Muhtemelen code bloğunu dışına yazmışsın sorun bundan kaynaklanıyor. Kodlar gayet güzel çalışıyor kullandım denedim hatti zatından geliştirdim... Diyeceksin ki niye yazıyorsun sen kimsin ?
          CEVAP
          Nette okadar çöp kod varki böyle düzenli bir anlatım ve doğru kullanım yapmış birinin o duruma düşmesini istemem başka arkadaşların kafası karışsın hiç istemem.... Lütfen daha dikkatli olalım.

  • ahmet

    20.1.2013 04:18:12 | Yanıtla

    Hocam teşekkürler güzel anlatım olmuş, genelde admin panelinde Session kullanıyordum fakat belirttiğiniz gibi session problemliydi biraz. Session süresini uzatmama rağmen bazen 5 bazen 10 dk sonra oturum sonlanıyordu en mantıklısı bu cookie işlemi fakat kafama şöyle bir soru takıldı. Cookie olayının güvenliği nedir ya  birileri zararlı yazılımlarla admin'in cookie bilgilerini alıp tarayıcılarda bulunan bazı cookie editör eklentileri ile giriş yapamaz mı ? böyle bir durum olabilir mi, bundan korunmanın yolları nedir ? iyi çalışmalar.

    • osmankurt

      20.1.2013 05:55:51 | Yanıtla

      Merhaba Ahmet,
      Tabi ki güvenlik konusun da bazı sıkıntıları sonuçta kullanıcının bilgisayarına güvenlik kimliğini yazıyoruz ama eksileri ve açıkları olduğu gibi bir takım artıları ve açıkları kapatabilme de mevcuttur. Bu konuda bir yazı hazırlamak amacındayım inş. kısa süre hazırlar paylaşırım. Sen de farklı yollar öğrenir burada paylaşırsan çok mutlu olurum.

  • ahmet

    20.1.2013 13:11:55 | Yanıtla

    Hocam yazınızı bekliyorum, bu arada bu sitede çok kaliteli ve yararlı bilgiler yer alıyor nasıl desem bilmiyorum ama diğer bloglara göre çok daha yararlı ve güncel bilgiler yer alıyor, bir projemde admin panelinde session değilde cookie kullanmayı düşünüyorum. Cookieleri şifreleme ile ilgili bir yazı okumuştum bu yöntem üzerinde biraz duracağım eğer somut bir sonuç alırsam tabi ki buraya yazarım.

  • mehmet

    26.6.2013 06:30:46 | Yanıtla

    Bu login sistemini kullanırsanız parolanız hacklenir. Parola cookie'ye açık açık yazdırılmış. Eğer cookie'niz silinmeden başkaları tarafından görüntülenirse tabi.

    bknz : http://postimg.org/image/n2qzulji7/

    • osmankurt

      26.6.2013 08:22:55 | Yanıtla

      Eğer ki parolayı yazarsanız tabi ki açık seçik görünür. Amacım zaten orada değişken saklamayı göstermek. Parolayı bu kod parçasın da cookie yazdırmanın hiçbir anlamı yok.

Loading