![]() | |||||
Forms Authentication - Rol tabanlı güvenlik sistemi | 02.06.2005 01:39:00 | ||||
| Kategori : ASP.NET Özet : Uygulamalarınızda sadece sisteme giriş yapmış olan kullanıcılar ve giriş yapmamış olan kullanıclardan öteye geçerek kullanıcı için önceden tanımlı olan yetkilendirmelere göre bir kaynağa erişebilmesini, erişememesini veya dahil olduğu rolün yetkilerine bağlı olarak sayfaların farklı içerikler ile görüntülenmesine gerçek hayatta sıkça rastlarsınız. | |||||
|
Forms Authentication - Rol tabanlı güvenlik sistemi Yazdığımız web uygulamasında her isteyenin görmesini istemediğimiz bölümler olabilir. Örneğin üyelik sistemi ile çalışan bir uygulamanın yönetim sayfası gibi. Asp.Net bize bazı güvenlik seçenekleri sunmaktadır.Forms Authentication, Windows Authentication, Passport Authentication. Authentication yöntemlerini daha önceki makalelerimde
incelemiştim. Windows Authentication ile rol tabanlı güvenlik sistemi oluşturmak için ekstra olarak bir işlem yapmaya gerek yoktur. Kullanıcılar zaten bazı gruplara dahil olarak ASP.NET katmanına gelirler. Ancak bu durum Forms Authenticaiton için aynı değildir. Zira Forms Authentication'da tüm yapılandırma ve yetkilendirme kendi kurduğumuz bir kullanıcı veritabanına bağlıdır. Forms Authentication ile rol tabanlı yetkilendirme uygulaması için bir örnek:
Login.aspx’i yaptıktan sonra,
Global.asax.vb ye aşağıdaki kodu ekleyin.
UyeRoller.GetRoles UyeID ye göre bir string dizisi olarak rolleri dönmektedir.
Not: GetRoles metodu için bir caching sistemi kullanılarak her istekte veritabanına gitmesi engellenebilir.
Bu noktada sisteme giriş yapmış olan kullanıcının rolleri öğrenilmiş ve sistemde rolleri tanınır bir biçimde gezmesi sağlanmıştır. Artık Web.config dosyasından istediğimiz rollere yetki yada kısıt tanımlayarak hangi rolün hangi kaynaklara erişebileceğini belirleyebiliriz.
Yazar.aspx: Sadece Admin,Editor,Yazar rolleri erişebilir. Editor.aspx: Sadece Admin,Editor rolleri erişebilir. Admin.aspx: Sadece Admin rolü erişebilir.
Burada bir web sayfasını hangi rollerin görebileceğini belirledik. Bazı durumlarda “bu sayfayı sadece Admin rolündekiler görsün” demek yerine “bu sayfayı herkes görsün, ama Admin geldiği zaman Haberler in yanında Sil ve Düzenle butonları görüntülensin” dememiz gerekebilir. Yani kullanıcının dahil olduğu role göre içerik üretmemiz gerekebilir. Bu durumda yapmamız gereken ise sayfayı web.config ile kıstılamadan kod ile sayfanın içeriğini belirlemektir. Örneğin:
Bir ASP.NET WebForm’da aşağıdaki kodu yazdığımızda kullanıcının dahil olduğu role göre Label1.Text değişecektir.
Sonuç Uygulamalarınızda sadece sisteme giriş yapmış olan kullanıcılar ve giriş yapmamış olan kullanıclardan öteye geçerek kullanıcı için önceden tanımlı olan yetkilendirmelere göre bir kaynağa erişebilmesini, erişememesini veya dahil olduğu rolün yetkilerine bağlı olarak sayfaların farklı içerikler ile görüntülenmesine gerçek hayatta sıkça rastlarsınız. Bu makalenin ile kendi uygulamalarınıza rol tabanlı güvenlik sistemi kazandırabilirsiniz.
Cengiz HAN
| |||||
Yazgelistir.com | |||||