Aracılığıyla paylaş


Uygulama Hizmetleri Kullanan Bir Web Sitesi Yapılandırma (C#)

tarafından Scott Mitchell

Not

Bu makale yazıldığından beri, ASP.NET Üyeliği sağlayıcılarının yerini ASP.NET Identity alır. Bu makalenin yazıldığı sırada öne çıkan Üyelik sağlayıcıları yerine ASP.NET Kimlik platformunu kullanmak için uygulamaları güncelleştirmenizi kesinlikle öneririz. ASP.NET Identity, ASP.NET Üyelik sistemine göre çeşitli avantajlara sahiptir, örneğin:

  • Daha iyi performans
  • Geliştirilmiş genişletilebilirlik ve test edilebilirlik
  • OAuth, OpenID Connect ve iki öğeli kimlik doğrulaması desteği
  • Talep Tabanlı Kimlik desteği
  • ASP.Net Core ile daha iyi birlikte çalışabilirlik

ASP.NET sürüm 2.0, .NET Framework parçası olan ve web uygulamanıza zengin işlevler eklemek için kullanabileceğiniz bir yapı taşı hizmetleri paketi olarak hizmet veren bir dizi uygulama hizmetini kullanıma sunmlandı. Bu öğreticide, üretim ortamındaki bir web sitesinin uygulama hizmetlerini kullanacak şekilde nasıl yapılandırılır ve üretim ortamında kullanıcı hesaplarını ve rollerini yönetmeyle ilgili yaygın sorunları giderir.

Giriş

ASP.NET sürüm 2.0, .NET Framework parçası olan ve web uygulamanıza zengin işlevler eklemek için kullanabileceğiniz bir yapı taşı hizmetleri paketi olarak hizmet veren bir dizi uygulama hizmetini kullanıma sunar. Uygulama hizmetleri şunları içerir:

  • Üyelik - Kullanıcı hesaplarını oluşturmaya ve yönetmeye yönelik bir API.
  • Roller : Kullanıcıları gruplara ayırmak için bir API.
  • Profil - Özel, kullanıcıya özgü içeriği depolamaya yönelik bir API.
  • Site Haritası - Bir sitenin mantıksal yapısını hiyerarşi biçiminde tanımlamaya yönelik bir API; daha sonra menüler ve içerik haritaları gibi gezinti denetimleri aracılığıyla görüntülenebilir.
  • Kişiselleştirme - Özelleştirme tercihlerini korumak için kullanılan ve en sık WebPart'larla kullanılan bir API.
  • Sistem Durumu İzleme : Çalışan bir web uygulaması için performans, güvenlik, hatalar ve diğer sistem durumu ölçümlerini izlemeye yönelik bir API.

Uygulama hizmetleri API'leri belirli bir uygulamaya bağlı değildir. Bunun yerine, uygulama hizmetlerine belirli bir sağlayıcıyı kullanma talimatı verirsiniz ve bu sağlayıcı hizmeti belirli bir teknolojiyi kullanarak uygular. Bir web barındırma şirketinde barındırılan İnternet tabanlı web uygulamaları için en yaygın olarak kullanılan sağlayıcılar, SQL Server veritabanı uygulaması kullanan sağlayıcılardır. Örneğin, SqlMembershipProvider bir Microsoft SQL Server veritabanında kullanıcı hesabı bilgilerini depolayan Üyelik API'sinin sağlayıcısıdır.

Uygulama hizmetlerini ve SQL Server sağlayıcılarını kullanmak, uygulamayı dağıtırken bazı zorluklara neden olur. Yeni başlayanlar için, uygulama hizmetleri veritabanı nesnelerinin hem geliştirme hem de üretim veritabanlarında düzgün bir şekilde oluşturulması ve uygun şekilde başlatılması gerekir. Yapılması gereken önemli yapılandırma ayarları da vardır.

Not

Uygulama hizmetleri API'leri, bir API uygulama ayrıntılarının çalışma zamanında sağlanmasını sağlayan bir tasarım deseni olan sağlayıcı modeli kullanılarak tasarlanmıştır. .NET Framework, SQL Server veritabanı uygulamasını kullanan Üyelik ve Rol API'leri için sağlayıcılar olan ve SqlRoleProvidergibi SqlMembershipProvider kullanılabilecek bir dizi uygulama hizmeti sağlayıcısıyla birlikte sunulur. Özel bir sağlayıcı da oluşturabilir ve eklenti ekleyebilirsiniz. Aslında, Book Reviews web uygulaması zaten Site Haritası API'si ()ReviewSiteMapProvider için, veritabanındaki ve Books tablolarındaki Genres verilerden site haritasını oluşturan özel bir sağlayıcı içerir.

Bu öğretici, Book Reviews web uygulamasını Üyelik ve Roller API'lerini kullanacak şekilde nasıl genişlettiğme bir bakışla başlar. Ardından, SQL Server veritabanı uygulamasıyla uygulama hizmetlerini kullanan bir web uygulamasını dağıtma adımlarını gösterir ve üretim ortamında kullanıcı hesaplarını ve rollerini yönetmeyle ilgili yaygın sorunları gidererek sonuç verir.

Kitap İncelemeleri Uygulamasına Güncelleştirmeler

Son birkaç öğreticide Book Reviews web uygulaması statik bir web sitesinden, türleri ve incelemeleri yönetmek için bir dizi yönetim sayfası içeren dinamik, veri odaklı bir web uygulamasına güncelleştirildi. Ancak, bu yönetim bölümü şu anda korunmuyor - yönetim sayfası URL'sini bilen (veya tahmin eden) herhangi bir kullanıcı sitemizde incelemeler oluşturabilir, düzenleyebilir veya silebilir. Bir web sitesinin belirli bölümlerini korumanın yaygın yollarından biri, kullanıcı hesaplarını uygulamak ve ardından belirli kullanıcılara veya rollere erişimi kısıtlamak için URL yetkilendirme kurallarını kullanmaktır. Bu öğreticiyle indirilebilen Kitap İncelemeleri web uygulaması, kullanıcı hesaplarını ve rolleri destekler. Yönetici adlı tek bir rolü vardır ve yönetim sayfalarına yalnızca bu roldeki kullanıcılar erişebilir.

Not

Book Reviews web uygulamasında üç kullanıcı hesabı oluşturdum: Scott, Jisun ve Alice. Üç kullanıcının da parolası aynı: parola! Scott ve Jisun Yönetici rolünde, Alice değil. Sitenin yönetim dışı sayfalarına anonim kullanıcılar erişmeye devam ediyor. Başka bir ifadeyle, yönetmek istemediğiniz sürece siteyi ziyaret etmek için oturum açmanız gerekmez; bu durumda Yönetici rolünde bir kullanıcı olarak oturum açmanız gerekir.

Kitap İncelemeleri uygulamasının ana sayfası, kimliği doğrulanmış ve anonim kullanıcılar için farklı bir kullanıcı arabirimi içerecek şekilde güncelleştirildi. Anonim bir kullanıcı siteyi ziyaret ederse sağ üst köşede oturum açma bağlantısı görür. Kimliği doğrulanmış bir kullanıcı "Hoş geldiniz, kullanıcı adı!" iletisini ve oturumu kapatma bağlantısını görür. Ayrıca, bir ziyaretçinin kimliğini doğrulamak için kullanıcı arabirimini ve mantığı sağlayan bir Oturum Açma Web denetimi içeren bir oturum açma sayfası ()~/Login.aspx vardır. Yalnızca yöneticiler yeni hesaplar oluşturabilir. (Klasörde kullanıcı hesapları ~/Admin oluşturmak ve yönetmek için sayfalar vardır.)

Üyelik ve Rol API'lerini Yapılandırma

Kitap İncelemeleri web uygulaması, kullanıcı hesaplarını desteklemek ve bu kullanıcıları roller (Yönetici rolü) olarak gruplandırmak için Üyelik ve Rol API'lerini kullanır. SqlMembershipProvider Hesap ve rol bilgilerini bir SQL Server veritabanında depolamak istediğimizden ve SqlRoleProvider sağlayıcı sınıfları kullanılır.

Not

Bu öğretici, Üyelik ve Rol API'lerini desteklemek üzere bir web uygulamasını yapılandırma konusunda ayrıntılı bir inceleme olarak tasarlanmamıştır. Bu API'lere ve bir web sitesini bunları kullanacak şekilde yapılandırmak için uygulamanız gereken adımlara ayrıntılı bir bakış için lütfen Web Sitesi Güvenliği Öğreticilerim'i okuyun.

Uygulama hizmetlerini bir SQL Server veritabanıyla kullanmak için, önce bu sağlayıcılar tarafından kullanılan veritabanı nesnelerini kullanıcı hesabı ve rol bilgilerinin depolanmasını istediğiniz veritabanına eklemeniz gerekir. Bu zorunlu veritabanı nesneleri çeşitli tablolar, görünümler ve saklı yordamlar içerir. Aksi belirtilmedikçe, SqlMembershipProvider ve SqlRoleProvider sağlayıcı sınıfları uygulama App_Data klasöründe bulunan adlı ASPNETDB bir SQL Server Express Edition veritabanı kullanır; böyle bir veritabanı yoksa, çalışma zamanında bu sağlayıcılar tarafından gerekli veritabanı nesneleriyle otomatik olarak oluşturulur.

Uygulama hizmetleri veritabanı nesnelerini web sitesinin uygulamaya özgü verilerinin depolandığı veritabanında oluşturmak mümkündür ve genellikle idealdir. .NET Framework, veritabanı nesnelerini belirtilen veritabanına yükleyen adlı aspnet_regsql.exe bir araçla birlikte görüntülenir. Devam ettim ve bu nesneleri klasördeki Reviews.mdfApp_Data veritabanına (geliştirme veritabanı) eklemek için bu aracı kullandım. Bu nesneleri üretim veritabanına eklediğimizde bu öğreticinin ilerleyen bölümlerinde bu aracın nasıl kullanılacağını göreceğiz.

Uygulama hizmetleri veritabanı nesnelerini dışındaki ASPNETDB bir veritabanına eklerseniz ve SqlRoleProvider sağlayıcı sınıfları yapılandırmalarını uygun veritabanını kullanacak şekilde özelleştirmeniz SqlMembershipProvider gerekir. Üyelik sağlayıcısını özelleştirmek için bölümünde bir <üyelik> öğesi<system.web>Web.configekleyin; roleManager> öğesini kullanarak< Rol sağlayıcısını yapılandırın. Aşağıdaki kod parçacığı Kitap İncelemeleri uygulamasından alınır ve Üyelik ve Rol API'leri Web.config için yapılandırma ayarlarını gösterir. Her ikisinin de sırasıyla ve sağlayıcılarını kullanan yeni bir sağlayıcı ReviewMembership (SqlMembershipProviderve SqlRoleProviderReviewRole ) kaydettirdiğini unutmayın.

<configuration>
    <system.web>
        ...

        <membership defaultProvider="ReviewMembership">
            <providers>
                <clear />

                <add type="System.Web.Security.SqlMembershipProvider" 
                     name="ReviewMembership" 
                     connectionStringName="ReviewsConnectionString" 
                     applicationName="BookReviews" />
            </providers>
        </membership>

        <roleManager enabled="true" defaultProvider="ReviewRole">
            <providers>
                <clear />

                <add type="System.Web.Security.SqlRoleProvider" 
                     name="ReviewRole" 
                     connectionStringName="ReviewsConnectionString" 
                     applicationName="BookReviews" />
            </providers>
        </roleManager>

        ...
    </system.web>
</configuration>

Dosya Web.config<authentication> öğesi de form tabanlı kimlik doğrulamasını destekleyecek şekilde yapılandırıldı.

<configuration>
    <system.web>
        ...

        <authentication mode="Forms" />

        ...
    </system.web>
</configuration>

Yönetim Sayfalarına Erişimi Sınırlama

ASP.NET, url yetkilendirme özelliği aracılığıyla belirli bir dosyaya veya klasöre kullanıcı veya rol tarafından erişim verilmesini veya erişimini reddetmeyi kolaylaştırır. (IIS ile ASP.NET Geliştirme Sunucusu Arasındaki Temel Farklar öğreticisinde URL yetkilendirmesini kısaca ele aldık ve IIS ile ASP.NET Geliştirme Sunucusunun statik ve dinamik içerik için URL yetkilendirme kurallarını nasıl farklı uyguladığını gösterdik.) Yönetici rolündeki kullanıcılar dışında klasöre ~/Admin erişimi yasaklamak istediğimizden, bu klasöre URL yetkilendirme kuralları eklemeliyiz. Özellikle, URL yetkilendirme kurallarının Yönetici rolündeki kullanıcılara izin vermeleri ve diğer tüm kullanıcıları reddetmeleri gerekir. Bu, klasöre aşağıdaki içeriklere ~/Admin sahip bir Web.config dosya eklenerek gerçekleştirilir:

<?xml version="1.0"?>
<configuration>
    <system.web>
        <authorization>
            <allow roles="Admin" />
            <deny users="*" />
        </authorization>
    </system.web>
</configuration>

ASP.NET URL yetkilendirme özelliği ve bunun kullanıcılar ve roller için yetkilendirme kurallarını hecelerken nasıl kullanılacağı hakkında daha fazla bilgi için, Web Sitesi Güvenliği Öğreticilerim'denKullanıcı Tabanlı Yetkilendirme ve Rol Tabanlı Yetkilendirme öğreticilerini okuduğunuzdan emin olun.

Application Services Kullanan Bir Web Uygulaması Dağıtma

Uygulama hizmetlerini kullanan bir web sitesini ve uygulama hizmetleri bilgilerini bir veritabanında depolayan bir sağlayıcıyı dağıtırken, uygulama hizmetlerinin ihtiyaç duyduğu veritabanı nesnelerinin üretim veritabanında oluşturulması zorunludur. Başlangıçta üretim veritabanı bu nesneleri içermez, bu nedenle uygulama ilk kez dağıtıldığında (veya uygulama hizmetleri eklendikten sonra ilk kez dağıtıldığında), bu gerekli veritabanı nesnelerini üretim veritabanında almak için ek adımlar uygulamanız gerekir.

Geliştirme ortamında oluşturulan kullanıcı hesaplarını üretim ortamına çoğaltmak istiyorsanız, uygulama hizmetlerini kullanan bir web sitesi dağıtırken başka bir zorluk ortaya çıkabilir. Üyelik ve Roller yapılandırmasına bağlı olarak, geliştirme ortamında oluşturulan kullanıcı hesaplarını üretim veritabanına başarıyla kopyalasanız bile, bu kullanıcılar üretimdeki web uygulamasında oturum açamaz. Bu sorunun nedenini inceleyeceğiz ve bunun nasıl önlenebileceğimizi tartışacağız.

ASP.NET, Visual Studio'dan başlatılabilir ve kullanıcı hesabı, rolleri ve yetkilendirme kurallarının web tabanlı bir arabirim üzerinden yönetilmesine izin veren güzel bir Web Sitesi Yönetim Aracı (WSAT) ile birlikte gelir. Ne yazık ki WSAT yalnızca yerel web sitelerinde çalışır; başka bir deyişle üretim ortamında web uygulaması için kullanıcı hesaplarını, rolleri ve yetkilendirme kurallarını uzaktan yönetmek için kullanılamaz. Üretim web sitenizdeN WSAT benzeri davranışları uygulamanın farklı yollarını inceleyeceğiz.

aspnet_regsql.exe Kullanarak Veritabanı Nesnelerini Ekleme

Veritabanı Dağıtma öğreticisi, tabloların ve verilerin geliştirme veritabanından üretim veritabanına nasıl kopyalanacaklarını gösterdi ve bu teknikler uygulama hizmetleri veritabanı nesnelerini üretim veritabanına kopyalamak için kesinlikle kullanılabilir. Bir diğer seçenek de aspnet_regsql.exe uygulama hizmetleri veritabanı nesnelerini bir veritabanından ekleyen veya kaldıran araçtır.

Not

Araç, aspnet_regsql.exe belirtilen veritabanında veritabanı nesnelerini oluşturur. Bu veritabanı nesnelerindeki verileri geliştirme veritabanından üretim veritabanına geçirmez. Geliştirme veritabanındaki kullanıcı hesabı ve rol bilgilerini üretim veritabanına kopyalamak istiyorsanız , Veritabanı Dağıtma öğreticisinde ele alınan teknikleri kullanın.

Şimdi aracı kullanarak aspnet_regsql.exe veritabanı nesnelerinin üretim veritabanına nasıl ekleneceğini inceleyelim. Başlangıç olarak Windows Gezgini'ni açın ve bilgisayarınızdaki .NET Framework sürüm 2.0 dizinine gidin, %WINDIR%\ Microsoft.NET\Framework\v2.0.50727. Burada aracı bulmalısınız aspnet_regsql.exe . Bu araç komut satırından kullanılabilir, ancak grafik kullanıcı arabirimi de içerir; grafik bileşenini başlatmak için dosyaya çift tıklayın aspnet_regsql.exe .

Araç, amacını açıklayan bir giriş ekranı görüntüleyerek başlar. Şekil 1'de gösterilen "Kurulum Seçeneği Seç" ekranına ilerlemek için İleri'ye tıklayın. Buradan uygulama hizmetleri veritabanı nesnelerini eklemeyi veya veritabanından kaldırmayı seçebilirsiniz. Bu nesneleri üretim veritabanına eklemek istediğimizden, "Uygulama hizmetleri için SQL Server yapılandır" seçeneğini belirleyin ve İleri'ye tıklayın.

Uygulama Hizmetleri için SQL Server Yapılandırmayı Seçin

Şekil 1: Uygulama Hizmetleri için SQL Server Yapılandırmayı Seçin (Tam boyutlu görüntüyü görüntülemek için tıklayın)

"Sunucu ve Veritabanı Seçin" ekranında veritabanına bağlanmak için bilgi istenir. Veritabanı sunucusunu, güvenlik kimlik bilgilerini ve web barındırma şirketiniz tarafından size sağlanan veritabanı adını girin ve İleri'ye tıklayın.

Not

Veritabanı sunucunuzu ve kimlik bilgilerinizi girdikten sonra, veritabanı açılan listesini genişletirken hata alabilirsiniz. Araç aspnet_regsql.exe , sunucudaki veritabanlarının listesini almak için sistem tablosunu sorgular sysdatabases , ancak bazı web barındırma şirketleri bu bilgilerin genel kullanıma açık olmaması için veritabanı sunucularını kilitler. Bu hatayı alırsanız veritabanı adını doğrudan açılan listeye yazabilirsiniz.

Aracı Veritabanınızın Bağlantı Bilgileriyle Sağlama

Şekil 2: Veritabanınızın Bağlantı Bilgilerini Içeren Aracı Sağlayın (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Sonraki ekranda, uygulama hizmetleri veritabanı nesnelerinin belirtilen veritabanına eklenmek üzere olduğu gibi gerçekleştirilmek üzere olan eylemler özetlenir. Bu eylemi tamamlamak için İleri'ye tıklayın. Birkaç dakika sonra, veritabanı nesnelerinin eklendiğine dikkat ederek son ekran görüntülenir (bkz. Şekil 3).

Başarı! Application Services Veritabanı Nesneleri Üretim Veritabanına Eklendi

Şekil 3: Başarılı! Application Services Veritabanı Nesneleri Üretim Veritabanına Eklendi (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Uygulama hizmetleri veritabanı nesnelerinin üretim veritabanına başarıyla eklendiğini doğrulamak için SQL Server Management Studio açın ve üretim veritabanınıza bağlanın. Şekil 4'te gösterildiği gibi, artık veritabanınızda aspnet_Applications, , aspnet_Membership, vb aspnet_Users. uygulama hizmetleri veritabanı tablolarını görmeniz gerekir.

Veritabanı Nesnelerinin Üretim Veritabanına Eklendiğini Onaylayın

Şekil 4: Veritabanı Nesnelerinin Üretim Veritabanına Eklendiğini Onaylayın (tam boyutlu görüntüyü görüntülemek için tıklayın)

Aracı yalnızca web uygulamanızı ilk kez dağıtırken veya uygulama hizmetlerini kullanmaya başladıktan sonra ilk kez kullanmanız aspnet_regsql.exe gerekir. Bu veritabanı nesneleri üretim veritabanına eklendikten sonra yeniden eklenmesi veya değiştirilmesi gerekmez.

Geliştirmeden Üretime Kullanıcı Hesaplarını Kopyalama

Uygulama hizmetleri bilgilerini bir SQL Server veritabanında depolamak için ve SqlRoleProvider sağlayıcı sınıflarını kullanırkenSqlMembershipProvider, kullanıcı hesabı ve rol bilgileri , , aspnet_Rolesve aspnet_UsersInRolesgibi aspnet_Usersaspnet_Membershipçeşitli veritabanı tablolarında depolanır. Geliştirme sırasında geliştirme ortamında kullanıcı hesapları oluşturuyorsanız ilgili veritabanı tablolarından ilgili kayıtları kopyalayarak bu kullanıcı hesaplarını üretim ortamında çoğaltabilirsiniz. Uygulama hizmetleri veritabanı nesnelerini dağıtmak için Veritabanı Yayımlama Sihirbazı'nı kullandıysanız, kayıtları kopyalamayı da seçmiş olabilirsiniz; bu da geliştirmede oluşturulan kullanıcı hesaplarının da üretimde olmasıyla sonuçlanabilir. Ancak yapılandırma ayarlarınıza bağlı olarak, hesapları geliştirme aşamasında oluşturulan ve üretime kopyalanan kullanıcıların üretim web sitesinden oturum açamadığını fark edebilirsiniz. Ne verir?

SqlMembershipProvider ve SqlRoleProvider sağlayıcı sınıfları, tek bir veritabanının birden çok uygulama için kullanıcı deposu görevi görecek şekilde tasarlanmıştır. Bu depoda her uygulama, teorik olarak kullanıcı adları ve rolleri aynı ada sahip çakışan kullanıcılara sahip olabilir. Bu esnekliğe izin vermek için veritabanı tablodaki aspnet_Applications uygulamaların listesini tutar ve her kullanıcı bu uygulamalardan biriyle ilişkilendirilir. Özellikle, aspnet_Users tablonun her kullanıcıyı tablodaki aspnet_Applications bir ApplicationId kayıtla bağlayan bir sütunu vardır.

Tablo, aspnet_Applications sütuna ApplicationId ek olarak, uygulama için daha kolay bir ad sağlayan bir sütun da içerirApplicationName. Bir web sitesi, oturum açma sayfasından kullanıcının kimlik bilgilerini doğrulamak gibi bir kullanıcı hesabıyla çalışmayı denediğinde, sınıfa SqlMembershipProvider hangi uygulamayla çalışılması gerektiğini anlatmalıdır. Bunu genellikle uygulama adını sağlayarak yapar ve bu değer özellikle özniteliği aracılığıyla sağlayıcısının applicationName yapılandırmasından Web.config gelir.

Ancak özniteliği içinde Web.configbelirtilmezse applicationName ne olur? Böyle bir durumda Üyelik sistemi, değer olarak applicationName uygulama kök yolunu kullanır. applicationName özniteliği açıkça içinde Web.configayarlanmadıysa, geliştirme ortamının ve üretim ortamının farklı bir uygulama kökü kullanma olasılığı vardır ve bu nedenle uygulama hizmetlerindeki farklı uygulama adlarıyla ilişkilendirilir. Böyle bir uyuşmazlık oluşursa, geliştirme ortamında oluşturulan kullanıcılar üretim ortamı değeriyle ApplicationId eşleşmeyen bir ApplicationId değere sahip olur. Net sonuç, bu kullanıcıların oturum açamamasıdır.

Not

Kendinizi bu durumda bulursanız ( eşleşmeyen ApplicationId bir değerle üretime kopyalanan kullanıcı hesaplarıyla) bu yanlış ApplicationId değerleri üretimde kullanılan değere güncelleştirmek için ApplicationId bir sorgu yazabilirsiniz. Güncelleştirildikten sonra, geliştirme ortamında hesapları oluşturulan kullanıcılar artık üretim ortamında web uygulamasında oturum açabiliyordu.

İyi haber, iki ortamın aynı ApplicationId şeyi kullanmasını sağlamak için atabileceğiniz basit bir adım olmasıdır. Özniteliği Web.config tüm uygulama hizmetleri sağlayıcılarınız için açıkça ayarlayınapplicationName. Özniteliğini ve <roleManager> öğelerinde applicationName<membership> açıkça "BookReviews" olarak bu kod parçacığının Web.config gösterildiği şekilde ayarladım.

<membership defaultProvider="ReviewMembership">
    <providers>
        <clear />

        <add type="System.Web.Security.SqlMembershipProvider" 
             name="ReviewMembership" 
             connectionStringName="ReviewsConnectionString" 
             applicationName="BookReviews" />
    </providers>
</membership>

Özniteliği ve arkasındaki gerekçeyi applicationName ayarlama hakkında daha fazla bilgi için Scott Guthrie'nin blog gönderisi, ASP.NET Üyeliğini ve diğer Sağlayıcılar'ı yapılandırırken her zaman applicationName özelliğini ayarlama makalesine bakın.

Üretim Ortamında Kullanıcı Hesaplarını Yönetme

ASP.NET Web Sitesi Yönetim Aracı (WSAT), kullanıcı hesaplarını oluşturmayı ve yönetmeyi, rolleri tanımlayıp uygulamayı ve kullanıcı ve rol tabanlı yetkilendirme kurallarının yazımını oluşturmayı kolaylaştırır. Çözüm Gezgini gidip ASP.NET Yapılandırması simgesine tıklayarak veya Web Sitesi veya Proje menülerine gidip yapılandırma ASP.NET menü öğesini seçerek Visual Studio'dan WSAT'yi başlatabilirsiniz. Ne yazık ki WSAT yalnızca yerel web siteleriyle çalışabilir. Bu nedenle, üretim ortamında web sitesini yönetmek için iş istasyonunuzdaki WSAT'yi kullanamazsınız.

İyi haber, WSAT tarafından sunulan tüm işlevlerin Üyelik ve Rol API'leri aracılığıyla program aracılığıyla kullanılabilir olmasıdır; Ayrıca, WSAT ekranlarının çoğu oturum açma ile ilgili standart ASP.NET denetimleri kullanır. Kısacası, web sitenize gerekli yönetim özelliklerini sunan ASP.NET sayfalar ekleyebilirsiniz.

Önceki öğreticilerde Book Reviews web uygulamasını bir ~/Admin klasör içerecek şekilde güncelleştirdiğini ve bu klasörün yalnızca Yönetici rolündeki kullanıcılara izin verecek şekilde yapılandırıldığını hatırlayın. Bu klasöre yöneticinin yeni bir kullanıcı hesabı oluşturabileceği adlı CreateAccount.aspx bir sayfa ekledim. Bu sayfada CreateUserWizard denetimi, yeni bir kullanıcı hesabı oluşturmaya yönelik kullanıcı arabirimini ve arka uç mantığını görüntülemek için kullanılır. Dahası, denetimi yeni kullanıcının da Yönetici rolüne eklenip eklenmeyeceğini soran bir CheckBox içerecek şekilde özelleştirdim (bkz. Şekil 5). Biraz çalışmayla, aksi takdirde WSAT tarafından sağlanacak kullanıcı ve rol yönetimiyle ilgili görevleri uygulayan özel bir sayfa kümesi oluşturabilirsiniz.

Not

Oturum açmayla ilgili ASP.NET Web denetimleriyle birlikte Üyelik ve Roller API'lerini kullanma hakkında daha fazla bilgi için Web Sitesi Güvenliği Öğreticilerim'i okuduğunuzdan emin olun. CreateUserWizard denetimini özelleştirme hakkında daha fazla bilgi için Kullanıcı Hesapları Oluşturma ve Ek Kullanıcı Bilgilerini Depolama öğreticilerine bakın veya Erich Peterson'ınCreateUserWizard Denetimini Özelleştirme makalesine bakın.

Yöneticiler Yeni Kullanıcı Hesapları Oluşturabilir

Şekil 5: Yöneticiler Yeni Kullanıcı Hesapları Oluşturabilir (Tam boyutlu görüntüyü görüntülemek için tıklayın)

WSAT'nin tüm işlevselliğine ihtiyacınız varsa, yazarı Dan Clem'in özel bir WSAT benzeri araç oluşturma işleminde yol gösterici olduğu Kendi Web Sitenizin Sıralı Yönetim Aracı'na göz atın. Dan, uygulamanın kaynak kodunu (C# dilinde) paylaşır ve bunu barındırılan web sitenize eklemek için adım adım yönergeler sağlar.

Özet

Uygulama hizmetleri veritabanı uygulamasını kullanan bir web uygulaması dağıtırken, önce üretim veritabanında gerekli veritabanı nesnelerinin bulunduğundan emin olmanız gerekir. Bu nesneler , Veritabanı Dağıtma öğreticisinde açıklanan teknikler kullanılarak eklenebilir; alternatif olarak, bu öğreticide aspnet_regsql.exe gördüğümüz gibi aracı kullanabilirsiniz. Geliştirme ve üretim ortamlarında kullanılan uygulama adını eşitleme (geliştirme ortamında oluşturulan kullanıcıların ve rollerin üretim ortamında geçerli olmasını istiyorsanız önemlidir) ve üretim ortamındaki kullanıcıları ve rolleri yönetme tekniklerini eşitlemeyle ilgili diğer zorluklara değindik.

Mutlu Programlama!

Daha Fazla Bilgi

Bu öğreticide ele alınan konular hakkında daha fazla bilgi için aşağıdaki kaynaklara bakın: