ASP.NET Mysql Session (oturum) ve Cookie (çerez) kullanarak login (giriş) yapımı

makale.baslik

Bu uygulama ile ASP.NET’te admin paneline giriş için basit ve kullanışlı login sayfası hazırlamayı göreceksiniz.

Admin paneli hazırlarken sistemin giriş kısmı için basit ve kullanışlı bir login sayfası için bu örneği kullanabilirsiniz.

Öncelikle veri tabanını oluşturuyoruz. Logindb adında veritabanı oluşturdum. İçinde de sadece kullanici tablosu mevcut. Siz isteğinize göre özelleştirebilirsiniz. kullanici tablosu aşağıdaki gibi olacak.

login veri tabanı

Veri tabanına bağlanırken App_Code/Baglan.cs dosyasında 

sds.ConnectionString = "server=localhost;user id=root;password=;database=logindb"; 

satırında kendi veri tabanınıza göre düzenleyiniz.  Asp.net ile Mysql veri tabanına bağlanmayı ASP.NET ile MySQL veri tabanına bağlanma ve veri çekme Repeater da gösterme makalesinde anlattım buradan da ayrıntılı bakabilirsiniz.

Daha sonra sistemi doğrudan kullanmanız için admin dizini içinde login.aspx sayfamızı yapacağız.

admin/Login.aspx sayfası için bootstrap ile bir sayfa hazırladım.


<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Login.aspx.cs" Inherits="login" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <link href="css/bootstrap.min.css" rel="stylesheet" />
    <title>Giriş</title>
    <style>
        .kutu{margin-top:40px}
    </style>
</head>
<body>
    <form id="form1" runat="server">
        <div class="row align-content-center justify-content-center ">
            <div class="col-md-3 kutu">
                <h3 class="text-center">Giriş Ekranı</h3>
                <table class="table">
                    <tr>
                        <td>
                            <asp:TextBox ID="txtKadi" class="form-control" placeholder="Kullanıcı adı" runat="server"></asp:TextBox>
                            <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txtKadi" CssClass="text-danger" Display="Dynamic" ErrorMessage="Kullanıcı adı giriniz."></asp:RequiredFieldValidator>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <asp:TextBox ID="txtParola" class="form-control" placeholder="Parola" runat="server" TextMode="Password"></asp:TextBox>
                            <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="txtParola" CssClass="text-danger" Display="Dynamic" ErrorMessage="Parola giriniz."></asp:RequiredFieldValidator>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <label>
                                <asp:CheckBox ID="ckbHatirla" runat="server" />
                                Beni hatırla
                            </label>
                        </td>
                    </tr>
                    <tr>
                        <td class="text-center">
                           
                                <asp:Button class="btn btn-primary btn-block" ID="btnGiris" runat="server" Text="Giriş" OnClick="btnGiris_Click" />
                            <asp:Label ID="lblHata" runat="server" CssClass="text-danger"></asp:Label>
                           
                        </td>
                    </tr>
                </table>
            </div>
        </div>
    </form>
</body>
</html>

Login

 

Burada RequiredFieldValidator ile kullanıcı adı ve parola alanlarının boş geçilmesini önlüyoruz. Beni hatırla kısmı ile parola girmeden sisteme girilmesini sağlayacağız.

admin/Login.aspx.cs sayfası ile de veri tabanına bağlanıp girilen kullanıcı verilerinin doğruluğunu kontrol edeceğiz.

admin/Login.aspx.cs dosyasının kodları aşağıdaki gibi olacak. Açıklama satırlarında kodların kullanımını bulabilirsiniz.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class login : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        //Sayfa ilk yüklendiğinde eğer oturum açılmış ise Default.aspx sayfasına yönlendiriyoruz
        if (Session["oturum"] == "56789") //oturum açılıp açılmadığını kontrol ediyoruz
        {
            Response.Redirect("Default.aspx"); 
        }
        //cerez adında daha önce oluşturulmuş çerez var mı 
        HttpCookie cerezOku = Request.Cookies["cerez"];  
        
        //eğer çerez varsa ve belirttiğimiz değere sahipse oturum oluşturuyoruz  
        if (cerezOku != null && cerezOku["11U"] == "Bilisim") 
        {
            Session["oturum"] = "56789"; // oturum oluşturma kodu
            Session["kadi"] = cerezOku["kadi"]; //kullanıcı adınıda çerezde tutup oturum açıyoruz.
            Response.Redirect("Default.aspx"); //oturum açlıldıktan sonra istenen sayfaya yönlendiriyoruz.
        }
    }
    protected void btnGiris_Click(object sender, EventArgs e)
    {
        string kAdi = txtKadi.Text;    //Forma girilen kullanıcı adını alıyoruz
        string parola = txtParola.Text;//Forma girilen parolayı alıyoruz

        SqlDataSource kullanici = Baglan.Sec("select * from kullanici where Kadi=@p1 and Parola=@p2");
        //Baglan.Sec metodunu kullanarak seçme sorgumuzu oluşturuyoruz

        // Kullanıcı adı ve parolayı güvenlik açığı olmaması için parametre olarak gönderiyoruz.
        kullanici.SelectParameters.Add("p1", kAdi);  

        // sql ininjection önlemek için parametreli bir yapı kullanmak önemli 
        kullanici.SelectParameters.Add("p2", parola);

        //Kullanıcı olup olmadığını sorgu sonucundan anlayabiliyoruz
        //sorgu sonucu satır sayısına bakarak, sıfırdan büyükse kullanıcı olduğunu anlıyoruz  
        if (Baglan.SatirSayisi(kullanici) > 0)  
        {
            Session["oturum"] = "56789"; //kullanıcı olduğu durumda oturumu oluşturuyoruz
            Session["kadi"] = kAdi;      //kullanıcı adınıda göstermek istersek bunuda sessionda tutabilirsiniz.
            
            //Beni hatırla seçilmiş ise çerez oluşturuyoruz
            if (ckbHatirla.Checked == true)
            {
                HttpCookie cerezYaz = new HttpCookie("cerez"); // çerez oluşturuyoruz
                cerezYaz["11U"] = "Bilisim";  //çerezin adını ve değerini veriyoruz
                cerezYaz["kadi"] = kAdi;      //kullanıcı adını da çereze ekliyoruz
                cerezYaz.Expires = DateTime.Now.AddDays(14);   //çerezin geçerlilik süresini belirtiyoruz
                Response.Cookies.Add(cerezYaz);  //oluşturduğumuz çerezi tarayıcıya ekliyoruz
            }

            Response.Redirect("Default.aspx"); //sayfa istenilen sayfaya yönlendiriliyor.
        }
        else
        {
            //eğer kullanıcı adı ve şifre hatalıysa Label da belirtiyoruz.
            lblHata.Text = "Kullanıcı adı veya parola geçersiz"; 
             
        }
    }
}

 

Kullanıcı giriş işlemi yaptıktan sonra yönlendireceğimiz sayfada da bazı kontroller yapmak gerekiyor. Bunlardan ilki kullanıcı oturum açmış mı? Eğer açmış ise sorun yok sayfayı göstereceğiz aksi durumda login sayfasına göndereceğiz.

Örnekte admin/Default.aspx sayfasına giriş yapılmasını sağlıyoruz. Kullandığım literal de kullanıcı adını gösteriyorum.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>Ana Sayfa</title>
    <link href="css/bootstrap.min.css" rel="stylesheet" />
</head>
<body>
    <form id="form1" runat="server">
    <div class="container">
        <asp:Literal ID="ltrKadi" runat="server"></asp:Literal><br />
        <asp:Button CssClass="btn btn-danger" ID="btnCikis" runat="server" Text="Çıkış" OnClick="btnCikis_Click" />
    </div>
    </form>
</body>
</html>

admin/Default.aspx.cs dosyasında gerekli kontrolleri yapıyoruz. Açıklama satırlarında kodların kullanımını bulabilirsiniz.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["oturum"] == "56789")  //Oturm açılmış mı diye bakıyoruz. 
        {
            ltrKadi.Text = "Merhaba " + Session["kadi"];
            //Eğer oturum açılmış ise sayfada kullanıcı adını yazdırıyoruz.
        }
        else
        {
            Response.Redirect("Login.aspx");  
            //oturum açılmamışsa login sayfasına geri dönüyoruz.
        }
    }
    protected void btnCikis_Click(object sender, EventArgs e)
    {
        Session.Remove("oturum"); //Çıkış butonuna basılınca oturumu sonlandırıyoruz.
        if (Request.Cookies["cerez"] != null) //eğer beni hatırla seçilmiş ise çerezi kaldırmak lazım
        {
            Response.Cookies["cerez"].Expires = DateTime.Now.AddDays(-1);
            //çerezin geçerliliğini eksi değer vererek sonlandırıyoruz.
        }
        Response.Redirect("Login.aspx"); //giriş sayfasına geri dönüyoruz.
    }
}

 

Sizde bu uygulamayı geliştirerek farklı ihtiyaçlarınız için kullanabilirsiniz.

Uygulama dosyaları ve veri tabanı dosyasını indirmek için: login.rar

Paylaş:

Yorumlar

    Bu yazı için hiç yorum yok. İlk yorumu yapmak ister misiniz?