asp.net mvc 2 mimarisi, asp.net uygulama yönetimi ve güvenlik desteği

22
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]

Upload: ali-ihsan-caliskan

Post on 22-Nov-2014

1.030 views

Category:

Technology


2 download

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

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

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]

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

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.

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

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ı.

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

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.

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

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.

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

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.

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

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.

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

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)

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

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.

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

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.

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

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.

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

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.

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

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.

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

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.

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

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(); }

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

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.

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

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');

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

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.

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

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.

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

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(); }

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

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.

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

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