SlideShare ist ein Scribd-Unternehmen logo
1 von 22
Downloaden Sie, um offline zu lesen
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.com




Hazırlayan: Ali İhsan Çalışkan                                              Sayfa 1/22
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği


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.




Hazırlayan: Ali İhsan Çalışkan                                              Sayfa 2/22
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 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ı.



Hazırlayan: Ali İhsan Çalışkan                                               Sayfa 3/22
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği


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.




Hazırlayan: Ali İhsan Çalışkan                                              Sayfa 4/22
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği




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




Hazırlayan: Ali İhsan Çalışkan                                             Sayfa 22/22

Weitere ähnliche Inhalte

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

Internet programcılığı-i
Internet programcılığı-iInternet programcılığı-i
Internet programcılığı-i
emre61
 
Windows Azure ile Cloud Computing Uygulamaları - 7
Windows Azure ile Cloud Computing Uygulamaları - 7Windows Azure ile Cloud Computing Uygulamaları - 7
Windows Azure ile Cloud Computing Uygulamaları - 7
İbrahim ATAY
 
Sql server 2012 gi̇ri̇ş
Sql server 2012 gi̇ri̇şSql server 2012 gi̇ri̇ş
Sql server 2012 gi̇ri̇ş
oktaygokgol
 
Osman kurt & zahide aytar
Osman kurt & zahide aytarOsman kurt & zahide aytar
Osman kurt & zahide aytar
Osman Kurt
 
F5 dergisi
F5 dergisiF5 dergisi
F5 dergisi
fatos11
 
Özgür Web Teknolojileri Günleri 2010 - İbrahim Hızlıoğlu // CodeIgniter Sunumu
Özgür Web Teknolojileri Günleri 2010 - İbrahim Hızlıoğlu // CodeIgniter SunumuÖzgür Web Teknolojileri Günleri 2010 - İbrahim Hızlıoğlu // CodeIgniter Sunumu
Özgür Web Teknolojileri Günleri 2010 - İbrahim Hızlıoğlu // CodeIgniter Sunumu
ibrahimhizlioglu
 

Ähnlich wie ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği (20)

İleri Seviye T-SQL Programlama - Chapter 21
İleri Seviye T-SQL Programlama - Chapter 21İleri Seviye T-SQL Programlama - Chapter 21
İleri Seviye T-SQL Programlama - Chapter 21
 
ASP.NET MVC'den ASP.NET Core'a Geçiş
ASP.NET MVC'den ASP.NET Core'a GeçişASP.NET MVC'den ASP.NET Core'a Geçiş
ASP.NET MVC'den ASP.NET Core'a Geçiş
 
Erdem Avni SELÇUK 22 Nisan 2015 Çözümpark & Gediz Üniversitesi İzmir MVC Work...
Erdem Avni SELÇUK 22 Nisan 2015 Çözümpark & Gediz Üniversitesi İzmir MVC Work...Erdem Avni SELÇUK 22 Nisan 2015 Çözümpark & Gediz Üniversitesi İzmir MVC Work...
Erdem Avni SELÇUK 22 Nisan 2015 Çözümpark & Gediz Üniversitesi İzmir MVC Work...
 
ASP.NET MVC'den ASP.NET Core MVC'ye Geçiş Süreci
ASP.NET MVC'den ASP.NET Core MVC'ye Geçiş SüreciASP.NET MVC'den ASP.NET Core MVC'ye Geçiş Süreci
ASP.NET MVC'den ASP.NET Core MVC'ye Geçiş Süreci
 
Internet programcılığı-i
Internet programcılığı-iInternet programcılığı-i
Internet programcılığı-i
 
sunu (Asp.net -1)
sunu (Asp.net -1)sunu (Asp.net -1)
sunu (Asp.net -1)
 
ASP.NET C# - Sayfa Detayları
ASP.NET C# - Sayfa DetaylarıASP.NET C# - Sayfa Detayları
ASP.NET C# - Sayfa Detayları
 
Windows Azure ile Cloud Computing Uygulamaları - 7
Windows Azure ile Cloud Computing Uygulamaları - 7Windows Azure ile Cloud Computing Uygulamaları - 7
Windows Azure ile Cloud Computing Uygulamaları - 7
 
Yeni başlayanlar için Laravel
Yeni başlayanlar için Laravel Yeni başlayanlar için Laravel
Yeni başlayanlar için Laravel
 
Sql server 2012 gi̇ri̇ş
Sql server 2012 gi̇ri̇şSql server 2012 gi̇ri̇ş
Sql server 2012 gi̇ri̇ş
 
AngularJS sunumu
AngularJS sunumuAngularJS sunumu
AngularJS sunumu
 
ASP.Net MVC ile Web Uygulamaları -17(MVCContrib)
ASP.Net MVC ile Web Uygulamaları -17(MVCContrib)ASP.Net MVC ile Web Uygulamaları -17(MVCContrib)
ASP.Net MVC ile Web Uygulamaları -17(MVCContrib)
 
Asp.net ajax
Asp.net ajaxAsp.net ajax
Asp.net ajax
 
Osman kurt & zahide aytar
Osman kurt & zahide aytarOsman kurt & zahide aytar
Osman kurt & zahide aytar
 
F5 dergisi
F5 dergisiF5 dergisi
F5 dergisi
 
Spring Framework
Spring FrameworkSpring Framework
Spring Framework
 
Microsoft Azure Mini BootCamp_1.Gün.pptx
Microsoft Azure Mini BootCamp_1.Gün.pptxMicrosoft Azure Mini BootCamp_1.Gün.pptx
Microsoft Azure Mini BootCamp_1.Gün.pptx
 
Hayrettin kunuk
Hayrettin kunukHayrettin kunuk
Hayrettin kunuk
 
Temel Düzeyde Visual Studio Eğitimleri
Temel Düzeyde Visual Studio EğitimleriTemel Düzeyde Visual Studio Eğitimleri
Temel Düzeyde Visual Studio Eğitimleri
 
Özgür Web Teknolojileri Günleri 2010 - İbrahim Hızlıoğlu // CodeIgniter Sunumu
Özgür Web Teknolojileri Günleri 2010 - İbrahim Hızlıoğlu // CodeIgniter SunumuÖzgür Web Teknolojileri Günleri 2010 - İbrahim Hızlıoğlu // CodeIgniter Sunumu
Özgür Web Teknolojileri Günleri 2010 - İbrahim Hızlıoğlu // CodeIgniter Sunumu
 

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

  • 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.com Hazırlayan: Ali İhsan Çalışkan Sayfa 1/22
  • 2. ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği 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. Hazırlayan: Ali İhsan Çalışkan Sayfa 2/22
  • 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 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ı. Hazırlayan: Ali İhsan Çalışkan Sayfa 3/22
  • 4. ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği 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. Hazırlayan: Ali İhsan Çalışkan Sayfa 4/22
  • 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. ASP.NET MVC 2 Mimarisi, ASP.NET Uygulama Yönetimi ve Güvenlik Desteği 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 Hazırlayan: Ali İhsan Çalışkan Sayfa 22/22