Asp.Net Membership Bölüm 1

Merhaba arkadaşlar bu yazımızda Asp.Net Membership Api’yi inceleyeceğiz. Dinamik oluşturulan her web sitesinde bir kullanıcı yönetimi olmak zorundadır. Bir blog sitesi bile yapsanız yönetim paneline erişebilmeniz için sitenizde bir üyelik kontrolü yapmanız gerekmektedir. Aksi taktirde siteye erişen bütün kullanıcılar belli bir yetkiye sahip kullanıcıların erişebileceği sayfalara erişebilir buda güvenlik açığına sebep olur. Bu durumu engellemenin çok çeşitli yolları vardır. Bizde bu yollardan bir tanesine değineceğiz şimdi.

İlk olarak kullanıcıların sayfalara erişimini engelleyen ayarımızı web.config dosyamıza ekliyoruz.

Bu kod blogu ile authentication olmayan kullanıcıları login sayfasına yönlendiriyoruz. Bu yazmış olduğumuz kod blogu en yalın haliyle kullanıcıyı login sayfasına yönlendiriyor. Şimdi bu kod blogunu genişletelim bunun dışında neler yapabiliriz ona bakalım.

Şimdi bu eklediğimiz alanların ne işe yaradığını açıklamaya çalışalım.

  • slidingExpiration true veya false değeri alır. True yapıldığında kullanıcı her istek yaptığında session süresini sıfırlar.
  • protection cookie’nin güvenliğinin nasıl olacağını belirlemeye yarar. All,Encryption,None,Validation değerleri alır.
  • name cookie’ye vereceğimiz ismi belirtir. Default olarak :ASPXAUTH değerini alır.
  • path cookie’nin nerede tutulacağını belirtir.
  • requireSSL true veya false değeri alır. Authentication cookie’nin taşınmasında ssl istenip istenmemesini tanımlar.
  • cookieless burada UseCookies ile her zaman cookie kullan diyoruz.
  • enableCrossAppRedirects bu değeri false yaparak cookie bilgimizi form post işleminde ve query stringde taşınmasını engelliyoruz.

Web.Config ayarlarını yaptığımıza göre şimdi controller tarafında yetkilendirme işlemine geçelim.Projemizde varolan controllerlarımıza [Authorize] ekliyoruz ve artık sadece authentice olan kullanıcılar bu controllera erişebilecekler.

Şimdi kullanıcıların Login sayfamıza erişebilmeleri gerekmektedir. Onun için Login  sayfamızın oldğu controllerı açıyoruz ve Login viewımıza [AllowAnonymous] ekliyoruz.

Şimdi projemize asp.net kullanıcı tablolarının bulunduğu veritabanını ekliyoruz. Bu işlem için Developer Command Prompt’ u açalım. Buraya aşağıdaki komutu ekleyelim.

Developer Command Prompt
Developer Command Prompt

 

Şimdi web.config tarafında membership ayarlarımızı yapalım.

ConnectionStringimizi ve membership ayarlarımızı yapıyoruz.

  • enablePasswordRetrieval bu özellik true yapıldığında kullanıcı şifresini unuttuğu zaman ona yeni şifre gönderilecek, false yapıldığında kullanıcıya eski şifresi gönderilecek.
  • enablePasswordReset kullanıcı şifre sıfırlama işlemi
  • requiresQuestionAndAnswer şifre güncelleme işleminde gizli soru sorulsun mu
  • requiresUniqueEmail email adresinin unique olmasını sağlıyor.

Şimdi GirisModel modelimizi oluşturalım.

Şimdi birde UyeOlModel modelimizi oluşturuyoruz.

Şimdi Login ve UyeOI sayfalarımızı yapalım.

Şimdi de post metodlarımızı yazalım.

UyeOl işleminin post metodunda ilk olarak form üzerinde boş alan bırakılıp bırakılmadığını kontrol etmek için ModelState.IsValid metoduyla kontrol işlemi yapıyoruz.

MembershipCreateStatus status = MembershipCreateStatus.Success; ile kayıt işleminden dönen durumu alıyoruz.

Membership.CreateUser(uyeOl.KullaniciAdi, uyeOl.Sifre, uyeOl.Email, uyeOl.Soru, uyeOl.Cevap, true, out status); ile kullanıcı ekleme işlemimizi yapıyoruz.

Switch case ilede dönen status’u bulup ekrana yazdırıyoruz.

 

Login işleminin post metodunda ilk olarak boş alan bırakılıp bırakılmadığını ModelState.IsValid metoduyla kontol ediyoruz.

Membership.ValidateUser(giris.KullaniciAdi, giris.Sifre) metodu ile kullanıcımızın veritabanında olup olmadığını kontrol ediyoruz.

Daha sonrasında da

Response.Cookies.Remove(FormsAuthentication.FormsCookieName);
FormsAuthentication.SetAuthCookie(giris.KullaniciAdi, giris.Hatirla);
return RedirectToAction(“Anasayfa”, “Home”);

kodları ile ilk olarak cookieyi kaldırıyoruz sonra cookie oluşturup anasayfaya yönlendirme işlemi yapıyoruz.

Şimdi birde home controllerda oluşturduğumuz Anasayfa view’ımıza log out linki ekliyoruz. Bunuda Account controllerındaki Logout metoduna gönderiyoruz ve kullanıcıya logout işlemi uyguluyoruz ve kullanıcıyı tekrar login sayfasına yönlendiriyoruz.

 

FormsAuthentication.SignOut();
Roles.DeleteCookie();
Session.Clear();

return RedirectToAction(“Login”, “Account”);

Evet artık yazımızın sonuna gelmiş bulunmaktayız. Basit anlamda bir login işlemi gerçekleştirmiş olduk. Bir sonraki yazımızda kullanıcı işlemlerinin devamını yapacağız. Şimdilik herkese kolay gelsin.

Artık bir bardak su içebiliriz.

 

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir