Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği

1,455 views

Published on

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.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği

  1. 1. ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği 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 aliihsancaliskan@yahoo.comHazırlayan: Ali İhsan Çalışkan Sayfa 1/22
  2. 2. ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği1. GİRİŞDokümanda anlatılacak olan ASP.NET MVC 2 uygulamaları ve ASP.NET güvenlikdesteğ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.Hazırlayan: Ali İhsan Çalışkan Sayfa 2/22
  3. 3. ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği 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 Cye, 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 Mden alır, aynı zamanda son kullanıcıdan gelen talepleri Cye 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ı.Hazırlayan: Ali İhsan Çalışkan Sayfa 3/22
  4. 4. ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği2. ASP.NET MVC UygulamasıBu bölümde bir ASP.NET MVC 2 uygulamasının yaratılması, uygulamakatmanlarının geliştirilmesi ve ASP.NET güvenlik desteği ile ilgili bilgiler örnekküçük bir uygulama geliştirilerek anlatılmıştır.Uygulama; Microsoft Visual Studio 2010 geliştirme ortamı, SQL Server 2008Express 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.Hazırlayan: Ali İhsan Çalışkan Sayfa 4/22
  5. 5. ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği 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ı URL istemlerini idare eden /Controllers Controller sınıflarını içerir. Veriyi temsil eden ve /Models işleyen sınıfları içerir. Çıktıların görüntülenmesini /Views sağlayan kullanıcı arayüzü dosyalarını içerir. Okuma/yazma yapılmak /App_Data istenen veri dosyslarının saklandığı yerdir. JavaScript kütüphane /Scripts dosyaları ve scriptlerin konulduğu yer. CSS ve imaj dosyaları ve /Content diğer dinamik olmayan içerik.Hazırlayan: Ali İhsan Çalışkan Sayfa 5/22
  6. 6. ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği 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.Hazırlayan: Ali İhsan Çalışkan Sayfa 6/22
  7. 7. ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği /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.Hazırlayan: Ali İhsan Çalışkan Sayfa 7/22
  8. 8. ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği 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)Hazırlayan: Ali İhsan Çalışkan Sayfa 8/22
  9. 9. ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği 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.Hazırlayan: Ali İhsan Çalışkan Sayfa 9/22
  10. 10. ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği 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.Hazırlayan: Ali İhsan Çalışkan Sayfa 10/22
  11. 11. ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği 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.Hazırlayan: Ali İhsan Çalışkan Sayfa 11/22
  12. 12. ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği 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.Hazırlayan: Ali İhsan Çalışkan Sayfa 12/22
  13. 13. ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği 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.Hazırlayan: Ali İhsan Çalışkan Sayfa 13/22
  14. 14. ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği 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.Hazırlayan: Ali İhsan Çalışkan Sayfa 14/22
  15. 15. ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği 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(); }Hazırlayan: Ali İhsan Çalışkan Sayfa 15/22
  16. 16. ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği 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.Hazırlayan: Ali İhsan Çalışkan Sayfa 16/22
  17. 17. ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği 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);Hazırlayan: Ali İhsan Çalışkan Sayfa 17/22
  18. 18. ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği 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.Hazırlayan: Ali İhsan Çalışkan Sayfa 18/22
  19. 19. ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği 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.Hazırlayan: Ali İhsan Çalışkan Sayfa 19/22
  20. 20. ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği 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(); }Hazırlayan: Ali İhsan Çalışkan Sayfa 20/22
  21. 21. ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği 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.Hazırlayan: Ali İhsan Çalışkan Sayfa 21/22
  22. 22. ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği3. 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.aspxHazırlayan: Ali İhsan Çalışkan Sayfa 22/22

×