Form Authentication Kullanarak Kullanıcı Girişi

MVC uygulamalarında kullanıcı giriş işlemleri Form Authentication(Form Kimlik Doğrulaması) ile yapılmaktadır. Sayfalarımıza erişim yetkisi belirlemek için Authorize ve AllowAnonymous attributelerii kullanabiliriz. Kullanıcının giriş yapıp yapmadığını kontrol ederek bazı sayfaları giriş yapmayan kullanıcılara kapatabiliriz.Nasıl yapacağımızı madde madde yapalım.

1. FormAutoDB isimli veritabanı içinde KullaniciTBL tablosu oluşturalım.

2.HomeController adlı bir controller oluşturalım ve içeriği şöyle olsun. Authorize ifadesi bu sayfaya ancak kullanıcı girişi yapanların ulaşabileceğini ifade etmiş olduk.Yetkili kişilerin girmesini istediğimiz tüm Actionların başına bu ifade yazılmalıdır.

   public class HomeController : Controller
    {
        [Authorize]
        public ActionResult Index()
        {
            return View();
        }
    }

.3.index.cshtml dosya içeriğimizi hazırlayalım; @HttpContext.Current.User.Identity.Name ifadesi ile kullanıcının adını istediğiniz yere yazdırabilirsiniz.

@{
    Layout = null;
}
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Index</title>
</head>
<body>
    <div style="float:left;width:40%"> 
       Yöneetim Paneli
    </div>
    <div style="float:left;text-align:right;width:20%">
        Hoşgeldiniz @HttpContext.Current.User.Identity.Name 
    </div>
    <div style="float:Right;width:40%;text-align:right;">
        @Html.ActionLink("Güvenli Çıkış","LogOut", "Security");
    </div>
</body>
</html>
4.Şurada anlatıldığı gibi Modelimizi oluşturalım.
 public partial class KullaniciTBL
    {
        public int Kullanici_İd { get; set; }
        public string Kullanici_Adi { get; set; }
        public string Kullanici_Parola { get; set; }      
    }

5.SecurityController adlı bir controller oluşturalım içeriğini şu şekilde kodlayalım. AllowAnonymous bu sayfaya herkes ulaşabilir anlamına gelmektedir.
    public class SecurityController : Controller
    {
        [AllowAnonymous]
        public ActionResult Login()
        {
            return View();
        }
        [AllowAnonymous]
        [HttpPost]
        public ActionResult Login(string Kullanici_Adi,string Kullanici_Parola)
        {
            FormAutoDBEntities db = new Models.FormAutoDBEntities();
            var kulla = db.KullaniciTBL.FirstOrDefault(x => x.Kullanici_Adi == Kullanici_Adi && x.Kullanici_Parola == Kullanici_Parola);
            if (kulla!=null)
            {
                FormsAuthentication.SetAuthCookie(kulla.Kullanici_Adi, false); //Cookie oluşturmak için
                return RedirectToAction("Index", "Home");
            }
            else
            {
                ViewBag.Hata = "Yanlış Kullanıcı";
                return View();
            }
            
        }
        public ActionResult LogOut()
        {
            FormsAuthentication.SignOut();//Güvenli çıkış işlemi için form kimlik doğrulamasını kapatıyoruz.
            return RedirectToAction("Login");
        }
    }
6.Login.cshtml dosya içeriği;
@model FormAuto.Models.KullaniciTBL
@{
    Layout = null;
}

<!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Login</title>
</head>
<body>
    <h2>Lütfen Giriş Yapınız</h2>
    <div>
        @ViewBag.Hata
    </div>
    @using (Html.BeginForm("Login","Security",FormMethod.Post ))
    {
        <table>
            <tr>
                <td>Kullanıcı Adı:</td>
                <td>
                    @Html.TextBoxFor(m => m.Kullanici_Adi)
                </td>
            </tr>
            <tr>
                <td>&nbsp;</td>
            </tr>
            <tr>
                <td>Şifre:</td>
                <td>
                    @Html.PasswordFor(m => m.Kullanici_Parola)
                </td>
            </tr>
            <tr>
                <td>&nbsp;</td>
                <td>
                    <button  type="submit">Giriş</button>
                </td>
            </tr>
        </table>
    }
     
</body>
</html>
Projemizin son durumu;

7. Web.Config dosyasının system.web tagları arasına aşağıdaki ifadeleri ekleyiniz. Yetkisiz bir sayfa isteği olduğunda sistem otomatik olarak login sayfasına yönlenecektir.
<system.web>
.......
    <authentication mode="Forms">
      <forms loginUrl="Security/Login"></forms>
    </authentication>
  .........
</system.web>
8.Global.asax dosyasına ise aşağıdaki satırı ekleyelim.
  protected void Application_Start()
  {
      GlobalFilters.Filters.Add(new AuthorizeAttribute());
      AreaRegistration.RegisterAllAreas();
      RouteConfig.RegisterRoutes(RouteTable.Routes);
  }
9. Projeyi çalıştıralım ve kayıtlı bir kullanıcı girelim.
10.Sonuç;


Sayfada sağ tuş öğeyi incele deyip Application sekmesini seçiniz ve oluşan cookie görünüz.