asp.net mvc 2 mimarisi, asp.net uygulama yönetimi ve güvenlik desteği
DESCRIPTION
ASP.NET MVC 2 Mimarisi üzerinde Uygulama Geliştirme ve ASP.NET'in sunduğu Uygulama Yönetim ve Güvenlik altyapısı hakkında yeni başlayanlara özel giriş niteliğinde anlatım.TRANSCRIPT
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
Hazırlayan: Ali İhsan Çalışkan Sayfa 1/22
ASP.NET MVC 2 MİMARİSİ,
ASP.NET UYGULAMA YÖNETİMİ
VE GÜVENLİK DESTEĞİ
Platform, Programlama Dili: Visual Studio 2010, C#
ÖNSÖZ: .NET tabanlı bir uygulama geliştirme projesi öncesi
yaptığım çalışmaları, yararlı olmasını dileyerek doküman haline getirdim ve paylaşıyorum.
Ali İhsan Çalışkan [email protected]
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
Hazırlayan: Ali İhsan Çalışkan Sayfa 2/22
1. GİRİŞ Dokümanda anlatılacak olan ASP.NET MVC 2 uygulamaları ve ASP.NET güvenlik desteğine ilişkin temel bilgiler aşağıda yer almaktadır.
1.1. ASP.NET
Microsoft tarafından geliştirilen ve programcılara dinamik web siteleri, web
uygulamaları ve web servisleri geliştirme ortamı sunan bir web uygulamaları geliştirme çatısı/teknolojisidir.
1.2. ASP.NET MVC
ASP.NET’in sunduğu ve model-view-controller (MVC) mimari desenini
uygulayan bir web uygulama çatısıdır. MVC ile ASP.NET uygulamaları Model, View ve Controller rollerine bölünerek geliştirilir. ASP.NET MVC uygulama altyapısı, ASP.NET Web Formları geliştirme altyapısına alternatif olarak
sunulmuştur.
Model-view-controller; yazılım mühendisliğinde kullanılan, bir web uygulamasının bileşenlerini mantıksal olarak ayıran bir ‘mimari tasarım
deseni’dir. Bu ayırma işlemi ile, uygulamanın özgün parçaları üzerinde daha fazla kontrol sağlanır ve geliştirme, değişiklik ve test işlemleri kolaylaşır.
Kullanıcıya yüklü miktarda verinin sunulduğu karmaşık uygulamalarda veri ve
gösterimin soyutlanması esasına dayanır. Böylece veriler (model) ve kullanıcı arayüzü (view) birbirini etkilemeden düzenlenebilir. Model-view-controller,
bunu controller adı verilen ara bileşenle, veri gösterimi ve kullanıcı etkileşiminden, veri erişimi ve iş mantığını çıkarma suretiyle çözmektedir.
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
Hazırlayan: Ali İhsan Çalışkan Sayfa 3/22
M (Model)
M (Model), İş Mantığını ve veri işleme süreçlerini yürütür. C (Controller) tarafından gönderilen emirlere göre hareket eder. Bilgi işleme sürecinden
sonra veriyi C'ye, diğer modellere veya doğrudan V (View)'ye gönderir.
V (View)
V (View) son kullanıcıya gösterilecek olan verinin sunumu ile ilgilenir. V, bu bilgiyi C veya M'den alır, aynı zamanda son kullanıcıdan gelen talepleri C'ye
iletir.
C (Controller)
C ise sistemin ana kısmıdır. Gelen talepleri kontrol eder ve sistemin diğer elemanlarının (M,V) bilgiyi uygun şekilde alıp, göndermelerini sağlar.
ASP.NET MVC 2.0 iskeleti üzerinde bir MVC 2 web uygulamasının nasıl yaratılacağı ve geliştirileceğine dair bilgiler ilerleyen bölümlerde
anlatılmaktadır.
1.3. ASP.NET Güvenlik Desteği
Günümüzde e-ticaret siteleri, portaller, web siteleri, forumlar ve sosyal ağlar gibi birçok uygulama, kullanıcı hesapları altyapısını sunar. Kullanıcı hesapları
sunan uygulamalar bir takım hazır servisler de sunmalıdır. Örneğin yeni ziyaretçiler yeni bir hesap yaratabilmeli, sisteme giriş yapan kullanıcı ya da
kullanıcı gruplarının kimliğine göre bazı sayfa ve eylemler sınırlandırılabilmeli/özelleştirilebilmelidir. Kullanıcı grupları, rolleri ve hesaplarının yönetimi kolayca yapılabilmelidir.
ASP.NET, geliştiriciler için yukarıda bahsedilen servisleri hazır olarak sunan
bir güvenlik desteği altyapısı sağlar. Güvenlikle ilgili uygulamaya özgü konfigürasyon değişiklikleri uygulamanın web.config dosyasında saklanırken kullanıcı, rol, üyelik gibi veriler ise ASPNETDB isimli veritabanında saklanır.
Geliştiricilere bu altyapıyı kullanarak aşağıdaki işlemleri
gerçekleştirebilmelerini sağlar:
Uygulamada kullanıcı tanımlama ve kullanıcı oturumu açma,
ASP.NET Üyelik altyapısı ile kullanıcı hesaplarını yönetebilme, Kullanıcı hesaplarını ekleme, güncelleme ve silme,
Giriş yapan kullanıcının kimliğine bağlı olarak web sayfası, dizin ya da belirli fonksiyonlara kısıtlı erişim sağlama,
ASP.NET’in Rol Yönetimi altyapısı ile kullanıcı hesaplarını roller ile
ilişkilendirme, Kullanıcı rollerini yönetme,
Web Sayfası, dizin ya da belirli fonksiyonlara rollere dayalı erişim kısıtlaması getirme,
Şifre Yönetimi (Yaratma, değiştirme, otomatik sıfırlama)
ASP.NET’in mevcut güvenlik altyapısını değiştirme ve geliştirme imkanı.
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
Hazırlayan: Ali İhsan Çalışkan Sayfa 4/22
2. ASP.NET MVC Uygulaması Bu bölümde bir ASP.NET MVC 2 uygulamasının yaratılması, uygulama katmanlarının geliştirilmesi ve ASP.NET güvenlik desteği ile ilgili bilgiler örnek küçük bir uygulama geliştirilerek anlatılmıştır.
Uygulama; Microsoft Visual Studio 2010 geliştirme ortamı, SQL Server 2008
Express Edition veritabanı ve C# dili kullanılarak geliştirilmiştir.
2.1. Uygulamanın Yaratılması
Visual Studio açıldıktan sonra File -> New -> Project menü öğesi seçilir.
Bir ASP.NET MVC 2 Uygulaması yaratmak için açılan New Project penceresinde sırasıyla sol bölümdeki Visual C# -> Web ve sağ bölümdeki
ASP.NET MVC 2 Web Application öğeleri seçilir. Aşağıdaki Name alanına uygulamanın adı yazılır. Uygulamanın adını Uygulama1 olarak belirleyerek
OK butonuna basabiliriz.
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
Hazırlayan: Ali İhsan Çalışkan Sayfa 5/22
OK butonuna basıldıktan sonra Create Unit Test Project isimli bir pencere
açılacaktır. Uygulamanızın fonksiyonelliği ve davranışlarını doğrulayacak olan otomatik testler içeren bir Birim Testi Projesi yaratmak isteyip
istemediğinizi soran bu pencereyi bu kılavuz kapsamında olmadığı için No, do not create a unit test project seçeneğini seçip OK butonuna basarak kapatabilirsiniz.
Visual Studio, bu işlemler sonucunda yeni bir ASP.NET MVC uygulamasını, otomatik olarak eklediği dosya ve dizinlerle birlikte yaratır.
Yandaki resimde de görüldüğü gibi çok sayıda
dizin ve dosyadan oluşan yeni bir uygulama
yaratıldı. ASP.NET MVC uygulamaları
aşağıdaki dizinlerle birlikte yaratılır:
Dizin Amacı
/Controllers URL istemlerini idare eden
Controller sınıflarını içerir.
/Models Veriyi temsil eden ve
işleyen sınıfları içerir.
/Views
Çıktıların görüntülenmesini
sağlayan kullanıcı arayüzü
dosyalarını içerir.
/App_Data
Okuma/yazma yapılmak
istenen veri dosyslarının
saklandığı yerdir.
/Scripts
JavaScript kütüphane
dosyaları ve scriptlerin
konulduğu yer.
/Content
CSS ve imaj dosyaları ve
diğer dinamik olmayan
içerik.
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
Hazırlayan: Ali İhsan Çalışkan Sayfa 6/22
NOT: ASP.NET MVC bu yapıda olmak zorunda değildir. Daha büyük
uygulamalarda, yönetilebilirlik açısından uygulama çok sayıda projeye ayrılabilir. Örneğin; veri modeli sınıfları genellikle ayrı bir kütüphane olarak
web uygulamasından bağımsız geliştirilir.
Oluşturulan uygulama şablonuna daha detaylı bakacak olursak;
Controllers dizini altında iki tane controller sınıfı bulunur.
HomeController.cs Visual Studio’nun otomatik olarak oluşturduğu Home ve
About isimli sayfaların akışının yönetildiği sınıftır.
AccountController.cs sınıfı ise, ASP.NET’in sunduğu Form ve
Üyelik(Membership) servisleriyle ilgili metotları içerir. Örneğin, sisteme giriş/kayıt
yapmak için açılan LogOn.aspx / Register.aspx sayfalarının kullandığı LogOn() ve Register() metodlarını içerir.
/Views dizinini açtığımızda, 3 alt dizin görürüz.
/Account dizini altında uygulamaya giriş,
kullanıcı kayıt, şifre değişikliği gibi işlemlere ilişkin formlar yer alır.
/Home dizini altında örnek olarak yaratılmış iki tane sayfa yer almaktadır.
/Shared dizini altında ise ortak kullanılan
şablon dosyaları yer alır.
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
Hazırlayan: Ali İhsan Çalışkan Sayfa 7/22
/Content ve /Scripts dizinleri sırasıyla
uygulamanın stilini belirleyen Site.css dosyasını ve AJAX ve jQuery desteği
sağlayan JavaScript kütüphanelerini içerir.
Uygulama dosyalarını inceledikten sonra Visual Studio’nun oluşturduğu uygulamayı çalıştırarak test edebiliriz.
Debug -> Start Without Debugging menü öğelerine tıklayarak uygulamayı
çalıştırabiliriz.
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
Hazırlayan: Ali İhsan Çalışkan Sayfa 8/22
Uygulama, aşağıdaki gibi açılacaktır. Aşağıdaki resim Home.aspx formunu
görüntülemektedir.
Log On linkine tıklanarak aşağıdaki gibi kullanıcı giriş formu açılabilir. (LogOn.aspx)
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
Hazırlayan: Ali İhsan Çalışkan Sayfa 9/22
2.2. ASP.NET Uygulama Güvenliği
Bu bölümde bir önceki bölümde yaratılan ASP.NET MVC 2 Uygulaması’nın güvenlik altyapısı anlatılacaktır.
ASP.NET; hazır olarak uygulama yönetimi, konfigürasyonu ve güvenliği altyapısı sunar.
Oluşturulan uygulamaya ait yönetim konsoluna girmek için; Visual Studio’da
Project -> ASP.NET Configuration menü öğesine tıklanır.
ASP.NET Web Site Application Tool aşağıdaki gibi açılacaktır.
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
Hazırlayan: Ali İhsan Çalışkan Sayfa 10/22
Açılan yönetim uygulaması Güvenlik (Security), Uygulama Konfigürasyonu
(Application Configuration) ve Sağlayıcı Konfigürasyonu (Provider Configuration) şeklinde 3 ayrı özellik sunar.
Uygulama Konfigürasyonu ile uygulama ayarları, e-posta servisi için SMTP ayarları, uygulamayı aktif/pasif yapma, debugging gibi yönetimsel
fonksiyonlar gerçekleştirilir.
Sağlayıcı Konfigürasyonu ile web sitesi yönetimi için kullanılan veri modelinin nerde saklanacağı ile ilgili ayarlar yapılır. Örneğin kullanılan Üyelik ve Rol Sağlayıcıları burdan ayarlanabilir ve test edilebilir. Yeni yaratılan
uygulamalar ASP.NET’in sunduğu sağlayıcılar kullanılacak şekilde konfigüre edilmiştir. ASPNETDB isimli veritabanını kullanır.
Güvenlik bölümünde ise uygulamanın güvenlik altyapısı ile ilgili yönetimsel fonksiyonlar gerçekleştirilir. Kimlik Doğrulama (Authentication) için kullanıcı
ve şifrelerinin yönetimi, rollerin yaratılması (kullanıcı grupları) ve uygulamanın çeşitli bölümlerine erişim izinlerinin kontrolü (Authorization) bu
bölümde gerçekleştirilir. Ancak; erişim kontrolleri yalnızca dizin bazında yapılabilmektedir. Sayfa bazındaki erişim kontrolü ilerleyen bölümlerde
programatik olarak gösterilecektir. Güvenlik ayarları için Web Site Administration uygulamasının üst
menüsünden Security’i seçiniz.
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
Hazırlayan: Ali İhsan Çalışkan Sayfa 11/22
Uygulama ilk yaratıldığında, roller aktif değildir. Rolleri aktif hale getirmek
için açılan sayfadaki Roles bölümünün altındaki Enable roles linkine tıklayınız.
Roller aktif olduktan sonra güvenlik yönetimi aşağıdaki bölüm kullanılarak
yapılabilir.
ASP.NET güvenlik altyapısı ile ilgili uygulamaya ait konfigürasyon bilgileri
uygulamanın Web.config dosyasında saklanır. Örneğin az önce rol sağlayıcısı aktif hale getirildikten sonra Web.config dosyasındaki
roleManager etiketinin enabled değişkeni true olarak değişmiştir. <roleManager enabled="true"> <providers> <clear /> <add connectionStringName="ApplicationServices" applicationName="/" name="AspNetSqlRoleProvider" type="System.Web.Security.SqlRoleProvider" /> <add applicationName="/" name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" /> </providers> </roleManager>
ASP.NET güvenlik altyapısı, oluşturulan kullanıcı ve rollere ilişkin bilgileri
tutmak üzere uygulama içinde bir SQL Server veri dosyası ile gelir. Proje dosyalarına Windows Explorer ile bakarak App_Data klasörüne girdiğinizde aşağıdaki gibi ASPNETDB isimli veri tabanı dosyasını görebilirsiniz.
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
Hazırlayan: Ali İhsan Çalışkan Sayfa 12/22
Dilerseniz bu dosyayı SQL Server veritabanına iliştirebilirsiniz. Bu bölümde ASPNETDB.MDF dosyasını Visual Studio’da açarak veritabanının yapısını
görmeye çalışacağız. Bunun için öncelikle aşağıdaki gibi Visual Studio’nun sol bölümünde bulunan Server Explorer açılır ve Data Connections’a sağ tıklandıktan sonra Add Connection’a tıklanır.
Açılan Choose Data Source penceresinden Microsoft SQL Server
Database File seçilir ve Continue butonuna tıklanır.
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
Hazırlayan: Ali İhsan Çalışkan Sayfa 13/22
Açılan Add Connection penceresinde Database file name alanını
doldurmak için Browse butonuna basılarak proje dosyaları içinde /App_Data/ASPNETDB.MDF dosyası seçilir ve Test Connection ile test
edildikten sonra OK butonuna basılır.
Bu işlem ile ASP.NET veri dosyasına bir bağlantı kurmuş olduk ve artık aşağıdaki gibi veritabanı nesnelerini görebilir ve yönetebiliriz. Aşağıda görünen tablo ve diğer nesneler ASP.NET Uygulama Yönetimi altyapısı için
otomatik oluşturulan veri altyapısıdır.
Yandaki resimde göründüğü gibi, uygulama içinde tanımlanacak
kullanıcılar, roller, kişiselleştirme, üyelik, profil gibi tanımlar bu veritabanında saklanacaktır.
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
Hazırlayan: Ali İhsan Çalışkan Sayfa 14/22
2.3. Uygulama Geliştirme
Önceki bölümlerde yeni bir MVC 2 uygulaması yaratıldı ve hazır olarak sunulan ASP.NET güvenlik altyapısı etkin hale getirildi. MVC 2 uygulamasının
yapısı ile güvenlik altyapısına ilişkin bilgiler verildi. Bu bölümde ise MVC mimarisi kullanılarak uygulamaya yeni sayfalar
ekleme ve bu sayfaların yaratılacak kullanıcı ve rollere özgü erişim yetkilerinin yapılması anlatılacaktır.
Örnek uygulamada Microsoft Virtual Earth web servisinden şehir haritalarını getiren bir sayfa yaratılacaktır.
Controller’ın Eklenmesi:
Controller sınıfları HTTP istemlerinin karşılanması ve yanıt verilmesinden
sorumludur. Her tarayıcı istemi belirli bir controller ile eşleştirilir. Örneğin; uygulamayı çalıştırdıktan sonra About sayfasına tıklayınız. Port
numarası farklı olsa da http://localhost:49812/Home/About adresine benzer bir adres açılacaktır. Bu adres açıldığında uygulamanın HomeController
isimli controller’ı çağrılır. HomeController sınıfı bu tarayıcı isteğini yanıtlamaktan sorumludur. HomeController sınıfı içinde ise About() isimli metot (Controller Action) bu URL ile çağrılmış olacaktır. Controller
Action’lar ile bir Controller sınıfı içinde tarayıcıya farklı yanıtlar döndürülür. Aşağıdaki örnekte About isimli metodla tarayıcıya bir view (HTML)
döndürülür. Bu view ise uygulamanın /Views/Home/About.aspx dosyasıdır.
public ActionResult About() { return View(); }
Tarayıcıya gönderilen yanıt HTML formatında olabileceği gibi farklı bir Controller’a yönlendirme, metin, JavaScript, ikil bir dosya içeriği, indirilebilir
bir dosya da olabilir. Ayrıca View nesnesi aracılığıyla tarayıcıya daha önce oluşturulan bir veri modeli de gönderilebilir.
MVC uygulamasına yeni bir Controller eklemek için Solution Explorer’da Controllers dizinine sağ tıklayarak Add’e tıklayınız ve sonra Controller’ı
seçiniz.
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
Hazırlayan: Ali İhsan Çalışkan Sayfa 15/22
Açılan Add Controller penceresinde Controller Name alanına
HaritaController yazarak Add butonuna tıklayınız. Controller Name alanının ‘Controller’ ile bitmesi gerekmektedir.
Visual Studio projeye HaritaController.cs adında yeni bir sınıf ekleyecektir. Şimdi de bu sınıfa haritaları görüntüleyebilmek için yeni bir Action Method
ekleyelim.
Yeni bir Action Method eklemek için HaritaController.cs sınıfına aşağıda kodu yapıştırıp dosyayı kaydediniz.
public ActionResult HaritaGoruntule() { return View(); }
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
Hazırlayan: Ali İhsan Çalışkan Sayfa 16/22
View’in Eklenmesi:
Haritaları görüntülemek için HaritaController sınıfının yöneteceği bir sayfa eklenir. Yeni bir sayfa içeriği dosyası eklemek için HaritaController sınıfı açılır,
HaritaGoruntule() metodu seçilerek sağ tıklanır ve aşağıdaki gibi Add View’e tıklanır.
Açılan Add View penceresinde oluşturacağınız aspx sayfasının adı, sayfanın
şablonu, bağlı olacağı veri modeli gibi seçenekler yer alır. Varsayılan değerlerle Add butonuna basınız.
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
Hazırlayan: Ali İhsan Çalışkan Sayfa 17/22
Aşağıda görüldüğü gibi yeni bir view sayfası oluşturuldu.
View’e İçerik Eklenmesi:
Yeni oluşturulan HaritaGoruntule.aspx sayfasını açınız ve aşağıdaki içeriği Content elemanının içine kopyalayınız.
<h2>Şehir Haritaları</h2> Şehir seç: <select onclick="GetMap(value);"> <option value="Istanbul">Istanbul, Türkiye</option> <option value="NewYork">New York, NY</option> <option value="Rio">Rio de Janeiro, Brazil</option> <option value="Paris">Paris, France</option> <option value="Naples">Naples, Italy</option> <option value="Keta">Keta, Ghana</option> <option value="Beijing">Beijing, China</option> <option value="Sydney">Sydney, Australia</option> </select> <br /> <br /> <div id='earthMap' style="position:relative; width:400px; height:400px;"> </div> <script charset="UTF-8" type="text/javascript" src="http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.2&mkt=en-us"> </script> <script type="text/javascript"> var map = null; var mapID = ''; function GetMap(mapID) { switch (mapID) { case 'Istanbul': map = new VEMap('earthMap'); map.LoadMap(new VELatLong(41.01, 28.96), 10, 'i', true); break; case 'NewYork': map = new VEMap('earthMap'); map.LoadMap(new VELatLong(40.7, -74), 10, 'i', true); break; case 'Rio': map = new VEMap('earthMap');
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
Hazırlayan: Ali İhsan Çalışkan Sayfa 18/22
map.LoadMap(new VELatLong(-22.91, -43.18), 10, 'i', true); break; case 'Paris': map = new VEMap('earthMap'); map.LoadMap(new VELatLong(48.87, 2.33), 10, 'i', true); break; case 'Naples': map = new VEMap('earthMap'); map.LoadMap(new VELatLong(40.83, 14.25), 10, 'i', true); break; case 'Keta': map = new VEMap('earthMap'); map.LoadMap(new VELatLong(5.92, 0.983), 10, 'i', true); break; case 'Beijing': map = new VEMap('earthMap'); map.LoadMap(new VELatLong(39.91, 116.39), 10, 'i', true); break; case 'Sydney': map = new VEMap('earthMap'); map.LoadMap(new VELatLong(-33.86, 151.21), 10, 'i', true); } } </script>
Böylece yeni sayfamızı yaratmış ve içeriklerini eklemiş olduk. Sayfanın uygulama menüsünde görünebilmesi için menülerin bulunduğu
/Views/Shared/Site.Master dosyası açılmalı ve yeni sayfaya ilişkin menü öğesi aşağıdaki gibi eklenmelidir.
Menü öğesi eklendikten sonra uygulamayı çalıştırarak yeni sayfayı test edebilirsiniz.
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
Hazırlayan: Ali İhsan Çalışkan Sayfa 19/22
Sayfa Erişim Yetkilerinin Yönetilmesi:
ASP.NET güvenlik altyapısının sunduğu olanakları incelemek için sırasıyla
aşağıdaki işlemler yapılacaktır.
TemelKullanici ve Yetkili adında iki tane rol (grup) tanımı
yapılacaktır. ali, mustafa ve seda adında 3 tane kullanıcı tanımı yapılacaktır. ali
isimli kullanıcıya Yetkili ve TemelKullanici rolleri verilecek, diğer iki kullanıcıya ise TemelKullanici rolü verilecektir.
Site ziyaretçileri sadece Home sayfasını görebilirken, TemelKullanici
rolündeki kullanıcılar Home ve About sayfalarını, Yetkili rolündeki kullanıcılar ise bunlara ek olarak Şehir Haritaları sayfasını
görebilecektir.
ASP.NET Web Site Administration aracını açmak için Visual Studio’da Project
-> ASP.NET Configuration menü öğesine tıklayarak açılan uygulamada Security sekmesine tıklayınız.
Yeni bir rol eklemek için Security sayfasındaki Create or Manage roles
linkine tıklayınız. Açılan sayfada rol adını yazarak rolleri tek tek ekleyiniz.
Rolleri aşağıdaki gibi ekledikten sonra sayfadaki Back butonuna tıklayarak Security sayfasına dönünüz.
Yeni kullanıcı eklemek için Security sayfasında Create User linkine tıklayarak açılan sayfada kullanıcı bilgileri ile kullanıcının sahip olacağı rolleri seçerek Create User butonuna basınız.
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
Hazırlayan: Ali İhsan Çalışkan Sayfa 20/22
Diğer iki kullanıcıyı da ekledikten sonra Security sayfasındaki Manage users linkine tıklayarak aşağıdaki gibi kullanıcı listesini görebilirsiniz.
Sayfalara erişim yetkisini programatik olarak ayarlamak için Controller
sınıflarını kullanırız. Şehir Haritaları sayfasının sadece Yetkili rolündeki kullanıcılar tarafından görünebilmesi için HaritaController.cs dosyasını açarak HaritaGoruntule() metodunu bulunuz. HaritaGoruntule() metodu
Şehir Haritaları (HaritaGoruntule.aspx) sayfasının tarayıcıya gönderilmesini sağlayan metoddur. Metodun üstüne aşağıdaki gibi Authorize
isimli belirtimi (annotation) ekleyerek erişim kuralını oluşturabilirsiniz.
[Authorize(Roles = "Yetkili")] public ActionResult HaritaGoruntule() {
return View(); }
Benzer şekilde HomeController.cs dosyasını açarak About() metodu üzerine
aşağıdaki gibi belirtim tanımı yapabilirsiniz.
[Authorize(Roles = "TemelKullanici, Yetkili")] public ActionResult About() { return View(); }
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
Hazırlayan: Ali İhsan Çalışkan Sayfa 21/22
Yukarıdaki işlemler ile formların erişim yetkisini rollere göre tanımladık.
Uygulamanın menü öğelerine de bu kurala göre programatik olarak erişim kuralı tanımlamalıyız. Bu sebeple Site.Master dosyasını açarak menu id’li
elemanın içini aşağıdaki gibi değiştiriniz.
<li><%: Html.ActionLink("Home", "Index", "Home")%></li> <% if (Page.User.IsInRole("Yetkili")) { %> <li><%: Html.ActionLink("Şehir Haritaları", "HaritaGoruntule", "Harita")%></li> <% } if (Page.User.IsInRole("Yetkili")||Page.User.IsInRole("TemelKullanici")) { %> <li><%: Html.ActionLink("About", "About", "Home")%></li> <% } %>
Sayfa Erişim Yetkilerinin Test Edilmesi:
Erişim yetkilerini test etmek için uygulamayı çalıştırınız. Uygulama ilk açıldığında yalnızca ziyaretçilerin görebileceği Home sayfası açılacak ve
menüde sadece bu sayfa görünecektir.
Uygulamanın sağ üst köşesinde bulunan Log On linkine tıklayarak ali kullanıcısı ile uygulamaya giriş yapınız. Ali kullanıcısı Yetkili rolüyle tüm sayfaları görme yetkisine sahip olduğundan menüde de tüm sayfaları
görebilecektir.
Seda ve mustafa kullanıcıları ise yalnızca TemelKullanici rolüne sahip olduklarından giriş yaptıklarında aşağıdaki gibi Home ve About sayfalarını
görebileceklerdir.
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği
Hazırlayan: Ali İhsan Çalışkan Sayfa 22/22
3. SONUÇ
Bu dokümanda ASP.NET MVC2 Uygulama mimarisi ve güvenlik altyapısı, giriş seviyesinde örneklerle anlatılmıştır. Bu mimari ve altyapı ile diğer .NET servis ve API’ları da kullanılarak Visual Studio ile kurumsal web uygulamaları, web
siteleri ve web servisleri gibi çok sayıda uygulama geliştirilebilir.
ASP.NET MVC hakkında daha fazla bilgi için: http://www.asp.net/mvc
ASP.NET Güvenlik Altyapısı hakkında daha fazla bilgi için: http://www.asp.net/security/tutorials
Referanslar:
http://en.wikipedia.org/wiki/ASP.NET http://en.wikipedia.org/wiki/ASP.NET_MVC_Framework
http://en.wikipedia.org/wiki/ASP.NET_Web_Site_Administration_Tool http://www.asp.net/ http://msdn.microsoft.com/en-us/library/dd410597.aspx