SQL Server’da Üyelik Şeması Oluşturma (C#)

tarafından Scott Mitchell

Not

Bu makale yazıldığından beri, ASP.NET Üyelik 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 aşağıdakiler dahil olmak üzere çeşitli avantajlara sahiptir:

  • 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

Kodu İndir veya PDF İndir

Bu öğretici, SqlMembershipProvider'ı kullanmak için veritabanına gerekli şemayı ekleme tekniklerini inceleyerek başlar. Bundan sonra şemadaki anahtar tabloları inceleyecek ve bunların amacını ve önemini tartışacağız. Bu öğretici, üyelik çerçevesinin kullanması gereken sağlayıcıyı ASP.NET bir uygulamaya nasıl söyleyeceğinizi gösteren bir bakışla sona erer.

Giriş

Önceki iki öğretici, web sitesi ziyaretçilerini tanımlamak için form kimlik doğrulaması kullanılarak incelendi. Forms kimlik doğrulama çerçevesi, geliştiricilerin bir kullanıcıyı bir web sitesinde oturum açmasını ve kimlik doğrulama biletlerini kullanarak sayfa ziyaretlerinde bu kullanıcıyı anımsamalarını kolaylaştırır. sınıfı, FormsAuthentication bileti oluşturmak ve ziyaretçinin tanımlama bilgilerine eklemek için yöntemler içerir. , FormsAuthenticationModule tüm gelen istekleri inceler ve geçerli bir kimlik doğrulama biletine sahip olanlar için bir ve nesnesini geçerli istekle oluşturur ve FormsIdentity ilişkilendirirGenericPrincipal. Forms kimlik doğrulaması yalnızca bir ziyaretçiye oturum açarken ve sonraki isteklerde kullanıcının kimliğini belirlemek için bu bileti ayrıştırırken bir kimlik doğrulama bileti vermek için bir mekanizmadır. Bir web uygulamasının kullanıcı hesaplarını desteklemesi için yine de bir kullanıcı deposu uygulamamız ve kimlik bilgilerini doğrulamak, yeni kullanıcıları kaydetmek ve kullanıcı hesabıyla ilgili diğer görevlerin sayısızını gerçekleştirmek için işlevsellik eklememiz gerekir.

ASP.NET 2.0'a başlamadan önce geliştiriciler, kullanıcı hesabıyla ilgili tüm bu görevleri uygulama konusunda hesaba katılmıştı. Neyse ki ASP.NET ekibi bu eksiklikleri fark etti ve ASP.NET 2.0 ile Üyelik çerçevesini kullanıma sunmlandı. Üyelik çerçevesi, .NET Framework kullanıcı hesabıyla ilgili temel görevleri gerçekleştirmek için programlı bir arabirim sağlayan bir sınıf kümesidir. Bu çerçeve, geliştiricilerin özelleştirilmiş bir uygulamayı standartlaştırılmış BIR API'ye eklemesine olanak tanıyan sağlayıcı modelinin üzerine kurulmuştur.

Güvenlikle ilgili Temel Bilgiler ve ASP.NET Desteği öğreticisinde açıklandığı gibi, .NET Framework iki yerleşik Üyelik sağlayıcısıyla birlikte gönderilir: ActiveDirectoryMembershipProvider ve SqlMembershipProvider. Adından SqlMembershipProvider da anlaşılacağı gibi, kullanıcı deposu olarak bir Microsoft SQL Server veritabanı kullanır. Bu sağlayıcıyı bir uygulamada kullanmak için sağlayıcıya depo olarak hangi veritabanının kullanılacağını söylememiz gerekir. Tahmin edebileceğiniz gibi, SqlMembershipProvider kullanıcı deposu veritabanının belirli veritabanı tablolarına, görünümlerine ve saklı yordamlarına sahip olmasını bekler. Bu beklenen şemayı seçili veritabanına eklemeliyiz.

Bu öğretici, kullanmak SqlMembershipProvideriçin veritabanına gerekli şemayı ekleme tekniklerini inceleyerek başlar. Bundan sonra şemadaki anahtar tabloları inceleyecek ve bunların amacını ve önemini tartışacağız. Bu öğretici, üyelik çerçevesinin kullanması gereken sağlayıcıyı ASP.NET bir uygulamaya nasıl söyleyeceğinizi gösteren bir bakışla sona erer.

Haydi başlayalım!

1. Adım: Kullanıcı Deposunun Nereye Yerleştirileceğine Karar Verme

bir ASP.NET uygulamasının verileri genellikle veritabanındaki bir dizi tabloda depolanır. Veritabanı şemasını SqlMembershipProvider uygularken Üyelik şemasının uygulama verileriyle aynı veritabanına mı yoksa alternatif bir veritabanına mı yerleştirilmesi gerektiğine karar vermemiz gerekir.

Aşağıdaki nedenlerle Üyelik şemasını uygulama verileriyle aynı veritabanında bulmanızı öneririm:

  • Bakýmýný ' verileri tek bir veritabanında kapsüllenmiş olan bir uygulamanın anlaşılması, bakımı ve dağıtımı, iki ayrı veritabanı olan bir uygulamadan daha kolaydır.
  • İlişkisel Bütünlük ' uygulama tablolarıyla aynı veritabanında Üyelikle ilgili tabloları bularak, Üyelikle ilgili tablolarda ve ilgili uygulama tablolarında birincil anahtarlar arasında yabancı anahtar kısıtlamaları oluşturmak mümkündür.

Kullanıcı deposunu ve uygulama verilerini ayrı veritabanlarına ayırmak, yalnızca her biri ayrı veritabanları kullanan birden çok uygulamanız varsa ancak ortak bir kullanıcı deposunu paylaşmanız gerekiyorsa mantıklıdır.

Veritabanı Oluşturma

İkinci öğreticiden bu yana derlediğimiz uygulamanın henüz bir veritabanına ihtiyacı yok. Ancak şimdi kullanıcı deposu için bir tane gerekir. Bir tane oluşturalım ve ardından sağlayıcının SqlMembershipProvider gerektirdiği şemayı ekleyelim (bkz. 2. Adım).

Not

Bu öğretici serisi boyunca uygulama tablolarımızı ve SqlMembershipProvider şemayı depolamak için bir Microsoft SQL Server 2005 Express Sürüm veritabanı kullanacağız. Bu karar iki nedenden dolayı alınmıştır: birincisi, maliyeti nedeniyle ücretsiz - Express Edition, SQL Server 2005'in en kolay erişilebilir sürümüdür; ikinci olarak SQL Server 2005 Express Sürüm veritabanları doğrudan web uygulamasının App_Data klasörü, veritabanını ve web uygulamasını tek bir ZIP dosyasında birlikte paketlemeyi ve özel kurulum yönergeleri veya yapılandırma seçenekleri olmadan yeniden dağıtmayı çok kolaylaştırır. SQL Server'nin Express olmayan bir sürümünü kullanarak da devam etmek isterseniz, çekinmeyin. Adımlar neredeyse aynıdır. Şema, SqlMembershipProvider Microsoft SQL Server 2000 ve daha yeni sürümleriyle çalışır.

Çözüm Gezgini klasöre sağ tıklayın App_Data ve Yeni Öğe Ekle'yi seçin. (Projenizde bir App_Data klasör görmüyorsanız, Çözüm Gezgini'da projeye sağ tıklayın, ASP.NET Klasör Ekle'yi seçin ve öğesini seçinApp_Data.) Yeni Öğe Ekle iletişim kutusunda adlı SecurityTutorials.mdfyeni bir SQL Veritabanı eklemeyi seçin. Bu öğreticide şemayı SqlMembershipProvider bu veritabanına ekleyeceğiz; sonraki öğreticilerde uygulama verilerimizi yakalamak için ek tablolar oluşturacağız.

App_Data Klasörüne SecurityTutorials.mdf Adlı Yeni bir SQL Veritabanı Ekleme

Şekil 1: Klasöre App_Data Yeni SQL Veritabanı Adlandırılmış SecurityTutorials.mdf Veritabanı Ekleme (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Klasöre veritabanı ekleme, App_Data veritabanını Otomatik olarak Veritabanı Gezgini görünümünde içerir. (Visual Studio'nun Express Edition olmayan sürümünde, Veritabanı Gezgini Sunucu Gezgini olarak adlandırılır.) Veritabanı Gezgini'ne gidin ve yeni eklenen SecurityTutorials veritabanını genişletin. Veritabanı Gezgini'ni ekranda görmüyorsanız Görünüm menüsüne gidin ve Veritabanı Gezgini'ni seçin veya Ctrl+Alt+S tuşlarına basın. Şekil 2'de gösterildiği SecurityTutorials gibi veritabanı boş olduğundan tablo, görünüm ve saklı yordam içermez.

SecurityTutorials Veritabanı Şu Anda Boş

Şekil 2: SecurityTutorials Veritabanı Şu Anda Boş (Tam boyutlu görüntüyü görüntülemek için tıklayın)

2. Adım: ŞemayıSqlMembershipProviderVeritabanına Ekleme

kullanıcı SqlMembershipProvider deposu veritabanına belirli bir tablo, görünüm ve saklı yordam kümesinin yüklenmesini gerektirir. Bu gerekli veritabanı nesneleri araç kullanılarak aspnet_regsql.exeeklenebilir. Bu dosya klasörde bulunur %WINDIR%\Microsoft.Net\Framework\v2.0.50727\ .

Not

Araç aspnet_regsql.exe hem komut satırı işlevselliği hem de grafik kullanıcı arabirimi sunar. Grafik arabirim daha kullanıcı dostudur ve bu öğreticide inceleyeceğiz. Komut satırı arabirimi, derleme betikleri veya otomatik test senaryoları gibi şemanın eklenmesi SqlMembershipProvider gerektiğinde kullanışlıdır.

Araçaspnet_regsql.exe, belirtilen SQL Server veritabanına ASP.NET uygulama hizmetleri eklemek veya kaldırmak için kullanılır. ASP.NET uygulama hizmetleri SqlMembershipProvider , diğer ASP.NET 2.0 çerçeveleri için SQL tabanlı sağlayıcıların şemalarıyla birlikte ve SqlRoleProviderşemalarını kapsar. Araç için iki bit bilgi aspnet_regsql.exe sağlamamız gerekir:

  • Uygulama hizmetleri eklemek veya kaldırmak isteyip istemediğiniz ve
  • Uygulama hizmetleri şemasının ekleneceği veya kaldırılacağı veritabanı

Veritabanının kullanılması istendiğinde araç, aspnet_regsql.exe veritabanının bulunduğu sunucunun adını, veritabanına bağlanmak için güvenlik kimlik bilgilerini ve veritabanı adını sağlamamızı ister. express olmayan SQL Server Sürümünü kullanıyorsanız, ASP.NET bir web sayfası aracılığıyla veritabanıyla çalışırken bağlantı dizesi aracılığıyla sağlamanız gereken bilgilerle aynı olduğundan, bu bilgileri zaten biliyor olmalısınız. Ancak, klasördeki bir SQL Server 2005 Express Sürüm veritabanı kullanırken sunucu ve veritabanı App_Data adını belirlemek biraz daha önemlidir.

Aşağıdaki bölümde, klasördeki bir SQL Server 2005 Express Sürüm veritabanı için sunucu ve veritabanı adını belirtmenin App_Data basit bir yolu incelenmiştir. SQL Server 2005 Express Sürüm kullanmıyorsanız Uygulama Hizmetlerini Yükleme bölümüne atlayabilirsiniz.

Klasördeki bir SQL Server 2005 Express Sürüm Veritabanı için Sunucu ve VeritabanıApp_DataAdını Belirleme

Aracı kullanabilmek aspnet_regsql.exe için sunucu ve veritabanı adlarını bilmemiz gerekir. Sunucu adı şeklindedir localhost\InstanceName. Büyük olasılıkla InstanceName şeklindedir SQLExpress. Ancak, SQL Server 2005 Express Sürüm el ile yüklediyseniz (yani Visual Studio'yu yüklerken otomatik olarak yüklemediyseniz), farklı bir örnek adı seçmiş olmanız mümkündür.

Veritabanı adını belirlemek biraz daha karmaşıktır. Klasördeki veritabanları genellikle veritabanı dosyasının App_Data yoluyla birlikte genel olarak benzersiz bir tanımlayıcı içeren bir veritabanı adına sahiptir. aracılığıyla aspnet_regsql.exeuygulama hizmetleri şemasını eklemek için bu veritabanı adını belirlememiz gerekir.

Veritabanı adını belirlemenin en kolay yolu, SQL Server Management Studio aracılığıyla incelemektir. SQL Server Management Studio, SQL Server 2005 veritabanlarını yönetmek için grafik arabirim sağlar, ancak SQL Server 2005 Express Edition ile birlikte gelmez. İyi haber, ücretsiz SQL Server Management Studio Express Edition'ı indirebilmenizdir.

Not

Masaüstünüzde SQL Server 2005'in Express Edition olmayan bir sürümü de yüklüyse, büyük olasılıkla Management Studio'nun tam sürümü yüklüdür. Express Edition için aşağıda açıklanan adımları izleyerek veritabanı adını belirlemek için tam sürümü kullanabilirsiniz.

Veritabanı dosyasına Visual Studio tarafından uygulanan tüm kilitlerin kapalı olduğundan emin olmak için Visual Studio'yu kapatarak başlayın. Ardından SQL Server Management Studio başlatın ve SQL Server 2005 Express Sürüm için veritabanına bağlanınlocalhost\InstanceName. Daha önce belirtildiği gibi, örnek adının olma olasılığı vardır SQLExpress. Kimlik Doğrulaması seçeneği için Windows Kimlik Doğrulaması'nı seçin.

SQL Server 2005 Express Sürüm Örneğine bağlanma

Şekil 3: SQL Server 2005 Express Sürüm Örneğine bağlanma (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Management Studio, SQL Server 2005 Express Sürüm örneğine bağlandıktan sonra Veritabanları, Güvenlik ayarları, Sunucu Nesneleri vb. için klasörleri görüntüler. Veritabanları sekmesini genişletirseniz, veritabanının SecurityTutorials.mdf veritabanı örneğinde kayıtlı olmadığını görürsünüz; önce veritabanını eklememiz gerekir.

Veritabanları klasörüne sağ tıklayın ve bağlam menüsünden Ekle'yi seçin. Bu, Veritabanları ekle iletişim kutusunu görüntüler. Buradan Ekle düğmesine tıklayın, veritabanına göz atın SecurityTutorials.mdf ve Tamam'a tıklayın. Şekil 4'de veritabanı seçildikten sonra SecurityTutorials.mdf Veritabanı Ekle iletişim kutusu gösterilmektedir. Şekil 5'de veritabanı başarıyla eklendikten sonra Management Studio'nun Nesne Gezgini gösterilmektedir.

SecurityTutorials.mdf Veritabanını Ekleme

Şekil 4: Veritabanını Ekleme SecurityTutorials.mdf (Tam boyutlu görüntüyü görüntülemek için tıklayın)

SecurityTutorials.mdf Veritabanı Veritabanları Klasöründe Görünür

Şekil 5: SecurityTutorials.mdf Veritabanı Veritabanları Klasöründe Görünür (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Şekil 5'in gösterdiği gibi, veritabanının SecurityTutorials.mdf adı oldukça uzaktır. Şimdi bunu daha akılda kalıcı (ve daha kolay yazılan) bir adla değiştirelim. Veritabanına sağ tıklayın, bağlam menüsünden Yeniden Adlandır'ı seçin ve veritabanını yeniden adlandırın SecurityTutorialsDatabase. Bu işlem dosya adını değiştirmez, yalnızca veritabanının kendisini SQL Server için tanımlamak için kullandığı adı değiştirir.

Veritabanını SecurityTutorialsDatabase olarak yeniden adlandırın

Şekil 6: Veritabanını SecurityTutorialsDatabaseolarak yeniden adlandırın (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Bu noktada veritabanı dosyasının sunucu ve veritabanı adlarını SecurityTutorials.mdf biliyoruz: localhost\InstanceName sırasıyla ve SecurityTutorialsDatabase. Artık araç aracılığıyla aspnet_regsql.exe uygulama hizmetlerini yüklemeye hazırız.

Uygulama Hizmetlerini Yükleme

Aracı başlatmak aspnet_regsql.exe için başlat menüsüne gidin ve Çalıştır'ı seçin. Metin kutusuna girin %WINDIR%\Microsoft.Net\Framework\v2.0.50727\aspnet_regsql.exe ve Tamam'a tıklayın. Alternatif olarak, Uygun klasörde detaya gitmek ve dosyaya çift tıklamak için Windows Gezgini'ni aspnet_regsql.exe kullanabilirsiniz. Her iki yaklaşım da aynı sonuçları elde eder.

aspnet_regsql.exe Aracı komut satırı bağımsız değişkenleri olmadan çalıştırmak ASP.NET SQL Server Kurulum Sihirbazı grafik kullanıcı arabirimini başlatır. Sihirbaz, belirtilen veritabanındaki ASP.NET uygulama hizmetlerini eklemeyi veya kaldırmayı kolaylaştırır. Şekil 7'de gösterilen sihirbazın ilk ekranı aracın amacını açıklar.

Üyelik Şemasını Eklemek için Kurulum Sihirbazının Yaptığı ASP.NET SQL Server Kullanma

Şekil 7: Üyelik Şeması Eklemek için Kurulum Sihirbazının Yaptığı ASP.NET SQL Server Kullanma (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Sihirbazın ikinci adımı, uygulama hizmetlerini eklemek mi yoksa kaldırmak mı istediğimizi sorar. için gerekli tabloları, görünümleri ve saklı yordamları eklemek istediğimizden, Uygulama hizmetleri için SqlMembershipProviderSQL Server yapılandır seçeneğini belirleyin. Daha sonra, bu şemayı veritabanınızdan kaldırmak istiyorsanız, bu sihirbazı yeniden çalıştırın, ancak bunun yerine Var olan bir veritabanından uygulama hizmetleri bilgilerini kaldır seçeneğini belirleyin.

Uygulama Hizmetleri için SQL Server Yapılandır Seçeneğini Belirleyin

Şekil 8: Application Services için SQL Server Yapılandır Seçeneğini belirleyin (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Üçüncü adım veritabanı bilgilerini ister: sunucu adı, kimlik doğrulama bilgileri ve veritabanı adı. Bu öğreticiyle birlikte takip ettiyseniz ve veritabanını öğesine eklediysenizSecurityTutorials.mdf, veritabanına eklediyseniz localhost\InstanceNameve olarak yeniden adlandırdıysanız SecurityTutorialsDatabaseaşağıdaki değerleri App_Datakullanın:

  • Sunucu: localhost\InstanceName
  • Windows kimlik doğrulaması
  • Veritabanı: SecurityTutorialsDatabase

Veritabanı Bilgilerini girin

Şekil 9: Veritabanı Bilgilerini girin (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Veritabanı bilgilerini girdikten sonra İleri'ye tıklayın. Son adım, atılacak adımları özetler. Uygulama hizmetlerini yüklemek için İleri'ye tıklayın ve sonra sihirbazı tamamlamak için Son'a tıklayın.

Not

Veritabanını eklemek ve veritabanı dosyasını yeniden adlandırmak için Management Studio kullandıysanız Visual Studio'yu yeniden açmadan önce veritabanını ayırdığınızdan ve Management Studio'yu kapatdığınızdan emin olun. Veritabanını ayırmak SecurityTutorialsDatabase için veritabanı adına sağ tıklayın ve Görevler menüsünden Ayır'ı seçin.

Sihirbazı tamamlayıp Visual Studio'ya dönün ve Veritabanı Gezgini'ne gidin. Tablolar klasörünü genişletin. Adları ön ekiyle aspnet_başlayan bir dizi tablo görmeniz gerekir. Benzer şekilde, Görünümler ve Saklı Yordamlar klasörleri altında çeşitli görünümler ve saklı yordamlar bulunabilir. Bu veritabanı nesneleri, uygulama hizmetleri şemasını oluşturur. 3. Adımda üyelik ve role özgü veritabanı nesnelerini inceleyeceğiz.

Veritabanına Çeşitli Tablolar, Görünümler ve Saklı Yordamlar Eklendi

Şekil 10: Veritabanına Çeşitli Tablolar, Görünümler ve Saklı Yordamlar Eklendi (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Not

Aracın aspnet_regsql.exe grafik kullanıcı arabirimi, uygulama hizmetleri şemasının tamamını yükler. Ancak komut satırından yürütürken aspnet_regsql.exe hangi uygulama hizmetleri bileşenlerinin yükleneceğini (veya kaldırılacağını) belirtebilirsiniz. Bu nedenle, ve sağlayıcıları için SqlMembershipProvider gerekli olan tabloları, görünümleri ve saklı yordamları eklemek istiyorsanız komut satırından komutunu çalıştırınaspnet_regsql.exe.SqlRoleProvider Alternatif olarak, tarafından aspnet_regsql.exekullanılan T-SQL oluşturma betiklerinin uygun alt kümesini el ile çalıştırabilirsiniz. Bu betikler, ,InstallMembership.sql,InstallRoles.sql ,InstallSqlState.sqlInstallProfile.sql gibi InstallCommon.sqladlara sahip klasörde bulunurWINDIR%\Microsoft.Net\Framework\v2.0.50727\.

Bu noktada, tarafından gereken veritabanı nesnelerini oluşturduk SqlMembershipProvider. Ancak Yine de Üyelik çerçevesine veritabanını kullanması SqlMembershipProvider gerektiğini (vs. gibiActiveDirectoryMembershipProvider) ve veritabanını kullanması SecurityTutorials gerektiğini söylememiz SqlMembershipProvider gerekir. 4. Adım'da hangi sağlayıcının kullanılacağını ve seçili sağlayıcı ayarlarının nasıl özelleştirileceğini nasıl belirleyeceğinize göz atacağız. Ancak ilk olarak, yeni oluşturulan veritabanı nesnelerine daha ayrıntılı bir göz atalım.

3. Adım: Şemanın Temel Tablolarına Bakış

ASP.NET bir uygulamada Üyelik ve Roller çerçeveleriyle çalışırken, uygulama ayrıntıları sağlayıcı tarafından kapsüllenir. Gelecek öğreticilerde, .NET Framework Membership ve Roles sınıfları aracılığıyla bu çerçevelerle arabirim oluştururuz. Bu üst düzey API'leri kullanırken, hangi sorguların yürütüldiği veya ve SqlRoleProvidertarafından SqlMembershipProvider hangi tabloların değiştirildiği gibi alt düzey ayrıntılarla ilgilenmemiz gerekmez.

Bunu göz önünde bulundurarak, 2. Adımda oluşturulan veritabanı şemasını keşfetmeden Üyelik ve Roller çerçevelerini güvenle kullanabiliriz. Ancak, uygulama verilerini depolamak için tabloları oluştururken kullanıcılar veya rollerle ilgili varlıklar oluşturmamız gerekebilir. Uygulama veri tabloları ile 2. Adımda oluşturulan tablolar arasında yabancı anahtar kısıtlamaları oluştururken ve SqlRoleProvider şemaları hakkında SqlMembershipProvider bilgi sahibi olmanıza yardımcı olur. Ayrıca, bazı nadir durumlarda kullanıcı ve rol depoları ile doğrudan veritabanı düzeyinde (veya Roles sınıfları yerineMembership) arabirim oluşturmamız gerekebilir.

Kullanıcı Depoyu Uygulamalara Bölümleme

Üyelik ve Roller çerçeveleri, tek bir kullanıcı ve rol deposunun birçok farklı uygulama arasında paylaşılabilmesi için tasarlanmıştır. Üyelik veya Roller çerçevelerini kullanan bir ASP.NET uygulaması hangi uygulama bölümünün kullanılacağını belirtmelidir. Kısacası, birden çok web uygulaması aynı kullanıcı ve rol depolarını kullanabilir. Şekil 11'de üç uygulamaya ayrılmış kullanıcı ve rol depoları gösterilmektedir: HRSite, CustomerSite ve SalesSite. Bu üç web uygulamasının kendi benzersiz kullanıcıları ve rolleri vardır, ancak bunların hepsi kullanıcı hesabını ve rol bilgilerini aynı veritabanı tablolarında fiziksel olarak depolar.

Kullanıcı hesapları birden çok uygulamada bölümlenebilir

Şekil 11: Kullanıcı Hesapları Birden Çok Uygulamada Bölümlenebilir (Tam boyutlu görüntüyü görüntülemek için tıklayın)

Bu aspnet_Applications bölümleri tanımlayan tablodur. Kullanıcı hesabı bilgilerini depolamak için veritabanını kullanan her uygulama bu tablodaki bir satırla temsil edilir. Tabloda aspnet_Applications dört sütun vardır: ApplicationId, ApplicationName, LoweredApplicationNameve Description. ApplicationId türündedir uniqueidentifier ve tablonun birincil anahtarıdır; ApplicationName her uygulama için benzersiz bir insan dostu ad sağlar.

Üyelik ve Rolle ilgili diğer tablolar içindeki aspnet_Applicationsalana geri ApplicationId bağlanır. Örneğin, aspnet_Users her kullanıcı hesabı için bir kayıt içeren tabloda yabancı anahtar alanı vardır ApplicationId ; tablo için aspnet_Roles ditto. ApplicationId Bu tablolardaki alan, kullanıcı hesabının veya rolün ait olduğu uygulama bölümünü belirtir.

Kullanıcı Hesabı Bilgilerini Depolama

Kullanıcı hesabı bilgileri iki tabloda yer alır: aspnet_Users ve aspnet_Membership. Tabloda aspnet_Users , temel kullanıcı hesabı bilgilerini barındıran alanlar bulunur. En ilgili üç sütun şunlardır:

  • UserId
  • UserName
  • ApplicationId

UserId birincil anahtardır (ve türünde uniqueidentifier). UserName türündedir nvarchar(256) ve parolayla birlikte kullanıcının kimlik bilgilerini oluşturur. (Kullanıcının parolası tabloda depolanır aspnet_Membership .) ApplicationId kullanıcı hesabını içindeki aspnet_Applicationsbelirli bir uygulamaya bağlar. ve ApplicationId sütunlarında UserName bileşik UNIQUE bir kısıtlama vardır. Bu, belirli bir uygulamada her UserName'in benzersiz olmasını sağlar, ancak aynı UserName özelliğin farklı uygulamalarda kullanılmasına izin verir.

Tabloda aspnet_Membership kullanıcının parolası, e-posta adresi, son oturum açma tarihi ve saati gibi ek kullanıcı hesabı bilgileri yer alır. ve aspnet_Membership tablolarındaki aspnet_Users kayıtlar arasında bire bir yazışma vardır. Bu ilişki, tablonun birincil anahtarı olarak hizmet veren içindeki aspnet_Membershipalanı tarafından UserId sağlanır. Tablo gibi aspnet_Users , aspnet_Membership bu bilgileri belirli bir ApplicationId uygulama bölümüyle bağlayan bir alan içerir.

Parolaların Güvenliğini Sağlama

Parola bilgileri tabloda depolanır aspnet_Membership . , SqlMembershipProvider aşağıdaki üç tekniklerden birini kullanarak parolaların veritabanında depolanmasını sağlar:

  • Temizle - parola veritabanında düz metin olarak depolanır. Bu seçeneği kullanmak kesinlikle önerilmez. Veritabanının güvenliği aşıldıysa ( arka kapıyı bulan bir bilgisayar korsanı veya veritabanı erişimi olan, küçümsemeyen bir çalışan tarafından olabilir) her kullanıcının kimlik bilgileri alma işlemi için oradadır.
  • Karma - parolalar tek yönlü karma algoritması ve rastgele oluşturulan bir tuz değeri kullanılarak karma olarak oluşturulur. Bu karma değer (tuzla birlikte) veritabanında depolanır.
  • Şifrelenmiş - parolanın şifrelenmiş bir sürümü veritabanında depolanır.

Kullanılan parola depolama tekniği, içinde Web.configbelirtilen ayarlara SqlMembershipProvider bağlıdır. 4. Adım'da ayarları özelleştirmeyi SqlMembershipProvider inceleyeceğiz. Varsayılan davranış, parola karması depolamaktır.

Parolayı depolamak için sorumlu sütunlar , PasswordFormatve PasswordSaltsütunlarıdırPassword. PasswordFormat , değeri parolayı depolamak için kullanılan tekniği gösteren türdeki int bir alandır: Clear için 0; Karma için 1; Şifrelenmiş için 2. PasswordSalt kullanılan parola depolama tekniğinden bağımsız olarak rastgele oluşturulmuş bir dize atanır; değeri PasswordSalt yalnızca parolanın karması hesaplanırken kullanılır. Son olarak, Password sütun düz metin parola, parola karması veya şifrelenmiş parola gibi gerçek parola verilerini içerir.

Tablo 1'de, MySecret! parolasını depolarken bu üç sütunun çeşitli depolama teknikleri için nasıl görünebileceği gösterilmektedir. .

Depolama Tekniği<_o3a_p /> Parola<_o3a_p /> PasswordFormat<_o3a_p /> PasswordSalt<_o3a_p />
Temizle MySecret! 0 tTnkPlesqissc2y2SMEygA==
Hashed 2oXm6sZHWbTHFgjgkGQsc2Ec9ZM= 1 wFgjUfhdUFOCKQiII61vtiQ==
Şifreli 62RZgDvhxykkqsMchZ0Yly7HS6onhpaoCYaRxV8g0F4CW56OXUU3e7Inza9j9BKp 2 LSRzhGS/aa/oqAXGLHJNBw==

Tablo 1: MySecret Parolasını Depolarken Password-Related Alanları için Örnek Değerler!

Not

tarafından SqlMembershipProvider kullanılan belirli şifreleme veya karma algoritması öğesindeki <machineKey> ayarlar tarafından belirlenir.

Rolleri ve Rol İlişkilendirmelerini Depolama

Roller çerçevesi, geliştiricilerin bir rol kümesi tanımlamasına ve hangi kullanıcıların hangi rollere ait olduğunu belirtmesine olanak tanır. Bu bilgiler veritabanında iki tablo aracılığıyla yakalanır: aspnet_Roles ve aspnet_UsersInRoles. Tablodaki aspnet_Roles her kayıt, belirli bir uygulama için bir rolü temsil eder. Tabloya aspnet_Users çok benzer şekilde, aspnet_Roles tablonun da tartışmamıza uygun üç sütunu vardır:

  • RoleId
  • RoleName
  • ApplicationId

RoleId birincil anahtardır (ve türünde uniqueidentifier). RoleName türündedir nvarchar(256). Ayrıca ApplicationId kullanıcı hesabını içindeki aspnet_Applicationsbelirli bir uygulamaya bağlar. ve sütunlarında bileşik UNIQUE bir kısıtlama vardır ve ApplicationId belirli bir uygulamada her rol adının benzersiz olmasını RoleName sağlar.

Tablo, aspnet_UsersInRoles kullanıcılar ve roller arasında eşleme görevi görür. Yalnızca iki sütun vardır : UserId ve RoleId - ve birlikte bileşik bir birincil anahtar oluştururlar.

4. Adım: Sağlayıcıyı Belirtme ve Ayarlarını Özelleştirme

Üyelik ve Roller çerçeveleri gibi sağlayıcı modelini destekleyen tüm çerçevelerde uygulama ayrıntıları eksiktir ve bunun yerine bu sorumluluğu bir sağlayıcı sınıfına devredebilirsiniz. Üyelik çerçevesi söz konusu olduğunda sınıfı, Membership kullanıcı hesaplarını yönetmek için API'yi tanımlar, ancak herhangi bir kullanıcı deposuyla doğrudan etkileşim kurmaz. Bunun yerine, sınıfın Membership yöntemleri isteği yapılandırılan sağlayıcıya devrediyor - biz kullanacağız SqlMembershipProvider. sınıftaki yöntemlerden Membership birini çağırdığımızda, Üyelik çerçevesi çağrısına SqlMembershipProvidertemsilci seçmeyi nasıl bilir?

sınıfı, Membership Üyelik çerçevesi tarafından kullanılabilecek tüm kayıtlı sağlayıcı sınıflarına başvuru içeren bir Providers özelliğe sahiptir. Her kayıtlı sağlayıcının ilişkili bir adı ve türü vardır. Ad, koleksiyondaki Providers belirli bir sağlayıcıya başvurmak için insan dostu bir yol sunarken, tür sağlayıcı sınıfını tanımlar. Ayrıca, her kayıtlı sağlayıcı yapılandırma ayarlarını içerebilir. Üyelik çerçevesinin yapılandırma ayarları arasında passwordFormat ve requiresUniqueEmailbulunur. tarafından SqlMembershipProviderkullanılan yapılandırma ayarlarının tam listesi için bkz. Tablo 2.

Özelliğin Providers içeriği web uygulamasının yapılandırma ayarları aracılığıyla belirtilir. Varsayılan olarak, tüm web uygulamalarının türünde SqlMembershipProvideradlı AspNetSqlMembershipProvider bir sağlayıcısı vardır. Bu varsayılan Üyelik sağlayıcısı içinde machine.config kayıtlıdır (konumunda %WINDIR%\Microsoft.Net\Framework\v2.0.50727\CONFIG)bulunur:

<membership>
 <providers>
 <add name="AspNetSqlMembershipProvider"
 type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" 
 connectionStringName="LocalSqlServer"
 enablePasswordRetrieval="false"
 enablePasswordReset="true"
 requiresQuestionAndAnswer="true"
 applicationName="/"
 requiresUniqueEmail="false"
 passwordFormat="Hashed"
 maxInvalidPasswordAttempts="5"
 minRequiredPasswordLength="7"
 minRequiredNonalphanumericCharacters="1"
 passwordAttemptWindow="10"
 passwordStrengthRegularExpression=""/>
 </providers> 
</membership>

Yukarıdaki işaretlemede gösterildiği gibi,<membership> alt öğe kayıtlı sağlayıcıları belirtirken <providers> öğesi Üyelik çerçevesi için yapılandırma ayarlarını tanımlar. Sağlayıcılar veya öğeleri kullanılarak <add> eklenebilir veya kaldırılabilir; şu anda kayıtlı olan tüm sağlayıcıları kaldırmak için öğesini kullanın<clear>.<remove> Yukarıdaki işaretlemede gösterildiği gibi türünde machine.configSqlMembershipProvideradlı AspNetSqlMembershipProvider bir sağlayıcı ekler.

ve type özniteliklerine name ek olarak, <add> öğesi çeşitli yapılandırma ayarları için değerleri tanımlayan öznitelikler içerir. Tablo 2'de her birinin açıklamasıyla birlikte kullanılabilir SqlMembershipProviderözel yapılandırma ayarları listelenir.

Not

Tablo 2'de belirtilen tüm varsayılan değerler, sınıfında tanımlanan varsayılan değerlere başvurur SqlMembershipProvider . içindeki AspNetSqlMembershipProvider yapılandırma ayarlarının tümünün sınıfın varsayılan değerlerine SqlMembershipProvider karşılık geldiğini unutmayın. Örneğin, üyelik sağlayıcısında belirtilmezse, requiresUniqueEmail ayar varsayılan olarak true olur. Ancak, AspNetSqlMembershipProvider bu varsayılan değeri açıkça değerini falsebelirterek geçersiz kılar.

Ayar<_o3a_p /> Açıklama<_o3a_p />
ApplicationName Üyelik çerçevesinin tek bir kullanıcı deposunun birden çok uygulama arasında bölümlendirilmesine olanak tanıdığını hatırlayın. Bu ayar, Üyelik sağlayıcısı tarafından kullanılan uygulama bölümünün adını gösterir. Bu değer açıkça belirtilmezse, çalışma zamanında uygulamanın sanal kök yolunun değerine ayarlanır.
commandTimeout SQL komut zaman aşımı değerini belirtir (saniye olarak). Varsayılan değer 30’dur.
connectionStringName Kullanıcı deposu veritabanına bağlanmak için kullanılacak öğesindeki <connectionStrings> bağlantı dizesi adı. Bu değer gereklidir.
description Kayıtlı sağlayıcının insan dostu bir açıklamasını sağlar.
enablePasswordRetrieval Kullanıcıların unutulan parolalarını alıp alamayacağını belirtir. false varsayılan değerdir.
enablePasswordReset Kullanıcıların parolalarını sıfırlamasına izin verilip verilmeyeceğini gösterir. varsayılan olarak trueayarlanır.
maxInvalidPasswordAttempts Kullanıcı kilitlenmeden önce belirtilen passwordAttemptWindow süre boyunca belirli bir kullanıcı için gerçekleşebilecek en fazla başarısız oturum açma girişimi sayısı. Varsayılan değer 5'tir.
minRequiredNonalphanumericCharacters Kullanıcının parolasında görünmesi gereken en az alfasayısal olmayan karakter sayısı. Bu değer 0 ile 128 arasında olmalıdır; varsayılan değer 1'dir.
minRequiredPasswordLength Parolada gereken en az karakter sayısı. Bu değer 0 ile 128 arasında olmalıdır; varsayılan değer 7'dir.
name Kayıtlı sağlayıcının adı. Bu değer gereklidir.
passwordAttemptWindow Başarısız oturum açma girişimlerinin izlendiği dakika sayısı. Bir kullanıcı bu belirtilen pencere içinde geçersiz oturum açma kimlik bilgileri maxInvalidPasswordAttempts sağlarsa kilitlenir. Varsayılan değer 10'dur.
PasswordFormat Parola depolama biçimi: Clear, Hashedveya Encrypted. Varsayılan değer: Hashed.
passwordStrengthRegularExpression Bu normal ifade sağlanırsa, yeni bir hesap oluştururken veya parolasını değiştirirken kullanıcının seçtiği parolanın gücünü değerlendirmek için kullanılır. Varsayılan değer boş bir dizedir.
requiresQuestionAndAnswer Kullanıcının parolasını alırken veya sıfırlarken güvenlik sorusunu yanıtlaması gerekip gerekmediğini belirtir. true varsayılan değerdir.
requiresUniqueEmail Belirli bir uygulama bölümündeki tüm kullanıcı hesaplarının benzersiz bir e-posta adresine sahip olması gerekip gerekmediğini gösterir. true varsayılan değerdir.
type Sağlayıcının türünü belirtir. Bu değer gereklidir.

Tablo 2: Üyelik ve SqlMembershipProvider Yapılandırma Ayarları

ek olarak, diğer Üyelik sağlayıcıları, dosyaya AspNetSqlMembershipProviderbenzer işaretlemeler eklenerek uygulama bazında Web.config kaydedilebilir.

Not

Roller çerçevesi de aynı şekilde çalışır: içinde machine.config varsayılan bir kayıtlı rol sağlayıcısı vardır ve kayıtlı sağlayıcılar uygulamasında Web.configuygulamaya göre özelleştirilebilir. Roller çerçevesini ve yapılandırma işaretlemesini gelecek bir öğreticide ayrıntılı olarak inceleyeceğiz.

SqlMembershipProviderAyarları Özelleştirme

Varsayılan SqlMembershipProvider (AspNetSqlMembershipProvider) öğesinin özniteliği olarak LocalSqlServerayarlanmıştırconnectionStringName. Sağlayıcı gibi AspNetSqlMembershipProvider bağlantı dizesi adı LocalSqlServer da içinde machine.configtanımlanır.

<connectionStrings> 
 <add name="LocalSqlServer" 
 connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true" 
 providerName="System.Data.SqlClient"/> 
</connectionStrings>

Gördüğünüz gibi, bu bağlantı dizesi | konumunda bulunan bir SQL 2005 Express Edition veritabanını tanımlarDataDirectory|aspnetdb.mdf'. | dizesiDataDirectory| çalışma zamanında dizinine işaret etmek için çevrildiği için ~/App_Data/ | veritabanı yoluDataDirectory|aspnetdb.mdf" ifadesi olarak ~/App_Data/aspnet.mdfçevrilir.

Uygulamamızın Web.config dosyasında herhangi bir Üyelik sağlayıcısı bilgisi belirtmediysek, uygulama varsayılan kayıtlı Üyelik sağlayıcısını kullanır. AspNetSqlMembershipProvider ~/App_Data/aspnet.mdf Veritabanı yoksa, ASP.NET çalışma zamanı bunu otomatik olarak oluşturur ve uygulama hizmetleri şemasını ekler. Ancak veritabanını kullanmak aspnet.mdf istemiyoruz, bunun yerine 2. Adımda oluşturduğumuz veritabanını kullanmak SecurityTutorials.mdf istiyoruz. Bu değişiklik iki yoldan biriyle gerçekleştirilebilir:

  • için LocalSqlServerbir değer belirtinbağlantı dizesi adı.Web.config içindeki bağlantı dizesi adı değerinin LocalSqlServerWeb.configüzerine yazarak varsayılan kayıtlı Üyelik sağlayıcısını (AspNetSqlMembershipProvider) kullanabilir ve veritabanıyla SecurityTutorials.mdf düzgün çalışmasını sağlayabiliriz. tarafından AspNetSqlMembershipProviderbelirtilen yapılandırma ayarlarıyla memnunsanız bu yaklaşım uygundur. Bu teknik hakkında daha fazla bilgi için Scott Guthrie'ninASP.NET 2.0 Uygulama Hizmetlerini SQL Server 2000 veya SQL Server 2005 Kullanacak Şekilde Yapılandırma blog gönderisine bakın.
  • Türünde yeni bir kayıtlı sağlayıcıSqlMembershipProvider eklemeconnectionStringName veayarınınSecurityTutorials.mdfVeritabanı. Bu yaklaşım, veritabanı bağlantı dizesi ek olarak diğer yapılandırma özelliklerini özelleştirmek istediğiniz senaryolarda kullanışlıdır. Kendi projelerimde her zaman esnekliği ve okunabilirliği nedeniyle bu yaklaşımı kullanıyorum.

Veritabanına başvuran SecurityTutorials.mdf yeni bir kayıtlı sağlayıcı ekleyebilmek için önce bölümünde Web.configuygun bir bağlantı dizesi değeri <connectionStrings> eklememiz gerekir. Aşağıdaki işaretleme, klasördeki App_Data SQL Server 2005 Express Sürüm veritabanına başvuran adlı SecurityTutorialsConnectionString yeni bir bağlantı dizesi SecurityTutorials.mdf ekler.

<configuration>
 <connectionStrings>
 <add name="SecurityTutorialsConnectionString" 
 connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\SecurityTutorials.mdf;Integrated Security=True;User Instance=True" 
 providerName="System.Data.SqlClient"/> 
 </connectionStrings> 
 <system.web>
 ... Configuration markup  removed for brevity ... 
 </system.web>
</configuration>

Not

Alternatif bir veritabanı dosyası kullanıyorsanız, bağlantı dizesi gerektiği gibi güncelleştirin. Doğru bağlantı dizesi oluşturma hakkında daha fazla bilgi için bkz. ConnectionStrings.com.

Ardından, dosyaya aşağıdaki Üyelik yapılandırması işaretlemesini Web.config ekleyin. Bu işaretleme adlı SecurityTutorialsSqlMembershipProvideryeni bir sağlayıcı kaydeder.

<configuration> 
 <connectionStrings>
 <add name="SecurityTutorialsConnectionString" 
 connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\SecurityTutorials.mdf;Integrated Security=True;User Instance=True" 
 providerName="System.Data.SqlClient"/>
 </connectionStrings> 
 <system.web>
 <membership defaultProvider="SecurityTutorialsSqlMembershipProvider">
 <providers>
 <!--Add a customized SqlMembershipProvider --> 
 <add name="SecurityTutorialsSqlMembershipProvider" 
 type="System.Web.Security.SqlMembershipProvider"
 connectionStringName="SecurityTutorialsConnectionString"
 enablePasswordRetrieval="false"
 enablePasswordReset="true"
 requiresQuestionAndAnswer="true"
 applicationName="SecurityTutorials"
 requiresUniqueEmail="true"
 passwordFormat="Hashed"
 maxInvalidPasswordAttempts="5"
 minRequiredPasswordLength="7"
 minRequiredNonalphanumericCharacters="1"
 passwordAttemptWindow="10"
 passwordStrengthRegularExpression=""/>
 </providers>
 </membership>
 ... Configuration markup removed for brevity ... 
 </system.web>
</configuration>

Yukarıdaki işaretleme, sağlayıcıyı kaydetmeye SecurityTutorialsSqlMembershipProvider ek olarak varsayılan sağlayıcı (öğesindeki defaultProvider<membership> özniteliği aracılığıyla) olarak tanımlarSecurityTutorialsSqlMembershipProvider. Üyelik çerçevesinin birden çok kayıtlı sağlayıcıya sahip olabileceğini hatırlayın. içinde ilk sağlayıcı machine.configolarak kayıtlı olduğundanAspNetSqlMembershipProvider, aksini belirtmediğimiz sürece varsayılan sağlayıcı olarak hizmet verir.

Şu anda uygulamamızda iki kayıtlı sağlayıcı vardır: AspNetSqlMembershipProvider ve SecurityTutorialsSqlMembershipProvider. Ancak sağlayıcıyı SecurityTutorialsSqlMembershipProvider kaydetmeden önce, öğemizden hemen önce bir <clear /> öğe ekleyerek daha önce kaydedilmiş tüm sağlayıcıları temizlemiş olabilirdik <add> . Bu, kayıtlı sağlayıcılar listesinden öğesini temizler AspNetSqlMembershipProvider , yani SecurityTutorialsSqlMembershipProvider tek kayıtlı Üyelik sağlayıcısı olur. Bu yaklaşımı kullandıysak, kayıtlı tek Üyelik sağlayıcısı olacağından varsayılan sağlayıcı olarak işaretlememiz SecurityTutorialsSqlMembershipProvider gerekmez. kullanma <clear />hakkında daha fazla bilgi için bkz. Sağlayıcı Eklerken Kullanma<clear />.

ayarının SecurityTutorialsSqlMembershipProviderconnectionStringName yeni eklenen SecurityTutorialsConnectionString bağlantı dizesi adına başvurduğunu ve ayarının applicationName SecurityTutorials değerine ayarlandığını unutmayın. Ayrıca, requiresUniqueEmail ayar olarak trueayarlanmıştır. Diğer tüm yapılandırma seçenekleri içindeki AspNetSqlMembershipProviderdeğerlerle aynıdır. dilerseniz burada herhangi bir yapılandırma değişikliği yapabilirsiniz. Örneğin, bir yerine alfasayısal olmayan iki karakter gerektirerek veya parola uzunluğunu yedi yerine sekiz karaktere çıkararak parola gücünü artırabilirsiniz.

Not

Üyelik çerçevesinin tek bir kullanıcı deposunun birden çok uygulama arasında bölümlendirilmesine olanak tanıdığını hatırlayın. Üyelik sağlayıcısının applicationName ayarı, sağlayıcının kullanıcı deposuyla çalışırken hangi uygulamayı kullandığını gösterir. açıkça ayarlanmadıysaapplicationName, çalışma zamanında web uygulamasının applicationName sanal kök yoluna atandığından yapılandırma ayarı için açıkça bir değer ayarlamanız önemlidir. Uygulamanın sanal kök yolu değişmediği sürece bu işlem düzgün çalışır, ancak uygulamayı farklı bir yola taşırsanız, applicationName ayar da değişir. Bu durumda Üyelik sağlayıcısı daha önce kullanılandan farklı bir uygulama bölümüyle çalışmaya başlar. Taşımadan önce oluşturulan kullanıcı hesapları farklı bir uygulama bölümünde yer alır ve bu kullanıcılar artık sitede oturum açamaz. Bu konuyla ilgili daha ayrıntılı bir tartışma için bkz. ASP.NET 2.0 Üyeliğini ve Diğer Sağlayıcıları Yapılandırırken Özelliği Her Zaman AyarlamaapplicationName.

Özet

Bu noktada, yapılandırılmış uygulama hizmetlerini (SecurityTutorials.mdf) içeren bir veritabanımız var ve web uygulamamızı Üyelik çerçevesinin yeni kaydettiğimiz sağlayıcıyı SecurityTutorialsSqlMembershipProvider kullanması için yapılandırdık. Bu kayıtlı sağlayıcı türündedir SqlMembershipProvider ve connectionStringName uygun bağlantı dizesi (SecurityTutorialsConnectionString) olarak ayarlanmıştır ve değeri açıkça ayarlanmıştırapplicationName.

Artık uygulamamızdan Üyelik çerçevesini kullanmaya hazırız. Sonraki öğreticide yeni kullanıcı hesaplarının nasıl oluşturulacağını inceleyeceğiz. Bunun ardından kullanıcıların kimliğini doğrulamayı, kullanıcı tabanlı yetkilendirme gerçekleştirmeyi ve kullanıcıyla ilgili ek bilgileri veritabanında depolamayı keşfedeceğiz.

Mutlu Programlama!

Daha Fazla Bilgi

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

Bu Öğreticide Yer Alan Konularda Video Eğitimi

Yazar hakkında

Birden çok ASP/ASP.NET kitabının yazarı ve 4GuysFromRolla.com kurucusu Scott Mitchell, 1998'den beri Microsoft Web teknolojileriyle çalışmaktadır. Scott bağımsız bir danışman, eğitmen ve yazar olarak çalışmaktadır. Son kitabı Sams Teach Yourself ASP.NET 24 Saat içinde 2.0. Scott'a adresinden mitchell@4guysfromrolla.com veya adresinden blogu http://ScottOnWriting.NETaracılığıyla ulaşılabilir.

Özel Teşekkürler

Bu öğretici serisi birçok yararlı gözden geçiren tarafından gözden geçirildi. Bu öğreticinin baş gözden geçireni Alicja Maziarz oldu. Yaklaşan MSDN makalelerimi gözden geçirmek istiyor musunuz? Öyleyse, bana bir satır mitchell@4GuysFromRolla.combırakın.