Merhaba dostlar,
Bu makalemde Asp.NET’de rol tabanli uygulamalara geçmeden önce kullanicinin uygulamaya girişinden itibaren kullanıcıyı kontrol edebilmek ve kullanici uygulamaya giriş yapmadan bazı sayfalara ve kontrollere erişim izni vermemek.
Örnek bir uygulama ile yapıyı pekiştirelim.Web uygulaması açarak başlayabiliriz.
Proje içerisindeki ilk adım site içerisinde yer alan web.config dosyasina gidelim..
<authentication mode=”Windows” />
Web.config içerisinde Authentication tipi default Windows olarak belirtilmiştir.
Authentication modları içerisinde Windows ve Forms tiplerine bakalım.
Windows Aut: Bu Authentication tipi Windows Nt veya Active Directory domaininde gerçeklesir.
Forms Aut : Web uygulamalarinin en çok tercih edilen Authentication tipidir.Bu Authentication tipinin sağlayıcısı cookiedir.Yani giriş yapan kullanıcı bilgileri cookie den sağlanir.
Evet bu kısmı Forms olarak belirtelim ve kullanıcı için gerekli hesap bilgilerini oluşturalım.
<authentication mode=”Forms” >
<forms defaultUrl=”Default.aspx” loginUrl=”Giris.aspx”>
<credentials passwordFormat=”Clear”>
<user name=”sinan” password=”1″/>
</credentials>
</forms>
</authentication>
Kullanici işlemleri için kullanilan snıflar web.config içerisindeki bu ayarlara göre hareket eder.
Kullanılacak olan sınıflar , methodlar ve özlliklerden biraz bahsedecek olursak,
Bu sınıf için ihtiyac olan namespace
System.Web.Security;
RedirectToLoginPage: LoginUrl de belirtilen adrese yönlendirir. >> Giris.aspx
Authenticate : Kullanıcıdan almış olduğu bilğiler doğrultusunda(Kullanıcı adı ve sifre) sisteme giriş yapmaya calışır(web.config içerisindeki hesap bilgileri ile çalışır). Geriye true/false değeri dönderir.
RedirectFromLoginPage: Kullanıcı sisteme giriş yapmış ise bu sayfa web.config içerisindeki defaultUrlin sahip olmuş oldugu adrese yönlendirir.2 parametre alır.
1.Parametre Sisteme giriş yapan kullanıcı adi
2.Parametre kullaıcı bilgilerini bir sonrki girişte hatrlaması(true/false)
Dikkat !: Kullanıcı , izni olmayan bir sayfaya erişmek istiyorsa Giriş.aspx sayfasına yönlendirilir. Burada dikkat edecek olursanuz QueryString’de “returnUrl” parametresi yer almaktadır.Bu parametres gelmiş olduğunuz sayfanın adresni tutar.Eğer sisteme giriş yaparsanız sizi bu sayfaya yönlendirir.Örnegin Profil.aspx saysına erişmek istiyorsunuz fakat erişim izni olmadığı için sizi Giris.aspx sayfasına yönlendirecektir.
Giris.aspx?returnUrl=Profil.aspx
Evet Projeye dönelim tekrar.
Proje içerisinde “Uye” klasoru oluşturalım ve bu klasore sisteme giriş yapmayan hiç bir kullanıcı erişemesin.Bunun için klasorun içerisinde Add>>new Item>>Web.config ekleyin.
<?xml version=”1.0″?>
<configuration>
<system.web>
<authorization>
<deny users=”?”/> Bilinmeyen kullanicilari uzaklastir.
</authorization>
</system.web>
</configuration>
“Uye” klasoru içerisinde ekleyeceginiz sayfalara artik sisteme giris yapmayan hiç bir kullanici erisemeyecektir.
Sayfanın bir köşesinde kullanıcının durumuna göre hareket edecek olan bir kontrol yani kullanici giriş yapmış ise Kullanıcının Profil bilgileri eğer giriş yapmamış ise kullanıcının giriş yapması için bir button yer alın.
Bunun için UserControl kullanacagım. Add>>New Item>>Web User Control “ucDurum”
MulviView içeriside 2 adet view ekletim.Kullanici sisteme giriş yapmamış ise View1 Aktif,Eğer giriş yapmış ise View 2 aktif olacaktır.Peki Kullanıcının sisteme giriş yapıp yapmadığını nasıl öğrenecegiz.
if (Page.User.Identity.IsAuthenticated)
{
lblKullaniciAdi.Text = Page.User.Identity.Name;
MultiView1.ActiveViewIndex = 1;
}
else
{
MultiView1.ActiveViewIndex = 0;
}
Page.User.Identity.IsAuthenticated özelligi sistemde bulunan kullanıcının Authenticated durumuna göre true/false değeri dönderir.Eğer kullanıcı sistem giriş yapmış ise true, else false:)
Çıkış buttonu altında
System.Web.Security.FormsAuthentication.SignOut();
System.Web.Security.FormsAuthentication.RedirectToLoginPage();
SingOut Methodu kullanıcı için oluşturulan cookies bilgileri yok edilir.
RedirectToLoginPage methodu ile ise web.config içerisinde yer alan loginUrl ‘e yönlendirir.
Buraya kadar herşey yolunda fakat kullanıcıyı sisteme nasıl login edecegiz? işte cevabi:)
Giris.aspx sayfasının tasarımı>>
Giriş butun altında çalışan yapı>>
bool durum = FormsAuthentication.Authenticate(TextBox1.Text,TextBox2.Text);
if (durum)
FormsAuthentication.RedirectFromLoginPage(TextBox1.Text, CheckBox1.Checked);
else
lblMesaj.Text = “Üzgünüm bilgiler yanlış”;
Evet örneği buradan indirebilirsiniz.Konu hakkında sorularınız için yorum satırına yazmanız yeterli olacaktır.
Bir sonraki makalemde Rol tabanlı kullanıcı işlemlerine yer verecegim.







