ASP.NET 2. 0'özel üyelik sağlayıcısı oluşturarak oturum açma denetimleri için varolan bir veri kaynağı kullanma

ÖNEMLİ: Bu makale, Microsoft Makine Çevirisi Düzenleme yazılımı tarafından tercüme edilmiş olup, yüksek olasılıkla profesyonel bir çevirmen yerine CTF teknolojisi kullanılarak, Microsoft Topluluğu tarafından düzenlenmiştir. Microsoft, Bilgi Bankamız içindeki tüm makaleleri kendi dilinizde okuyabilmeniz için size hem profesyonel çevirmenler tarafından tercüme edilen hem de makine tarafından tercüme edildikten sonra Topluluk tarafından kontrol edilen makaleler sunar. Bununla birlikte, makine tarafından tercüme edilen, hatta Topluluk tarafından kontrol edilen bir makale bile her zaman mükemmel dil kalitesinde olmayabilir. Makalede dilinizi konuşan yabancı birisinin yapabileceği türden sözcük, söz dizimi veya dilbilgisi hataları bulunabilir. Microsoft, içeriğin hatalı tercümesinin veya müşterilerimiz tarafından kullanımının doğurabileceği olası yanlış anlamalar, hatalar veya zararlardan sorumlu değildir. Öte yandan Microsoft, Makine Çevirisi Düzenleme işlemini geliştirmek amacıyla Makine Çevirisi Düzenleme yazılımını ve araçlarını sık sık güncelleştirmektedir.

Makalenin İngilizcesi aşağıdaki gibidir: 910440
Kullanım Dışı Bilgi Bankası İçeriği Yasal Uyarı
Bu makale, Microsoft'un artık destek sağlamadığı ürünler ile ilgili olarak yazılmıştır. Bu nedenle, bu makale "olduğu gibi" sağlanmıştır ve bundan sonra güncelleştirilmeyecektir.
ASP.NET Destek Sesi sütunu

ASP.NET 2. 0'özel üyelik sağlayıcısı oluşturarak oturum açma denetimleri için varolan bir veri kaynağı kullanma

Bu sütunun ihtiyaçlarınıza özelleştirmek için Knowledge Base makaleleri ve Destek Sesi sütunu ve görmek istediğiniz konuları ilgilendiren konular hakkındaki fikirlerinizi gelecekte ele göndermek için sizi davet etmek istiyoruz. Fikir ve görüşlerinizi kullanarak Gönder İsteyin Form. Bu sütunun alt form için bir bağlantı yoktur.
Giriş
Merhaba ve yeniden Hoş Geldiniz! Parag Agarwal adımın olduğu ve Microsoft'taki burada destek mühendisi olduğum. Bu ay biz tartışmak Microsoft ASP.NET 2.0 sağlayıcıları için oturum açma denetimleri yönetme, başka bir güzel özelliği olacak.

Genel bakış

Bu ayın sütununda, ben aşağıdaki konular ele alınmaktadır:
  • Oturum açma denetimleri kısa genel bakış
  • ASP.NET2.0 sağlayıcısı modelde kısa genel bakış
  • Varolan bir veri kaynağını usedby oturum açma denetimleriyle olabilir özel bir sağlayıcı oluşturma, gözden geçirme

Oturum açma denetimleri

Hemen hemen her Web uygulamasında oturum açma işlevselliği sağlamak için çok yaygın bir gereksinimdir. ASP.NET 2.0 yayınlanmadan önce kullanıcı kimlik doğrulaması için kullanıcı arabirimi (UI) tasarlamak için kullandık. Bu çok fazla gereksiz kod yazma söz konusu. Bunu önlemek için ASP.NET 2.0 Programlama gerektiren Web uygulamaları için sunucu denetimleri bir dizi şeklinde bir oturum açma tamamlanamıyor çözümü sağlar. Dahili olarak bu denetimleri kullanıcı girebildikleri uygun UI kendi kimlik bilgileri iletmekten sorumlu olan ve bunları doğrulayın. Şimdi, bizim UI sayfasını geliştirici olarak tasarlamak zorunda değilsiniz ve biz kullanıcı olarak kimlik doğrulaması kendi kod yazarak ilgilen gerek yoktur. Oturum açma denetimi tarafından kullanılan temel sağlayıcı model alır, dikkat edin. Sonraki bölümde kullanıcı kimlik doğrulaması için oturum açma denetimi sağlayıcıları nasıl kullandığını göreceğiz. Oturum açma denetimleri ve nasıl bunları aşağıdaki Web sitesinden kullanabileceğimizi hakkında daha fazla bilgi bulabilirsiniz:

Sağlayıcı modeli

Sağlayıcı modeli geliştiricilerin takılabilir yazılım oluşturmasına olanak sağlar. Böylece her iki parça bağımsız olarak değişebilir bir yöntemin soyutlaması decouple için temel olarak hazırlanmıştır. Bunu yapmak için ASP.NET tüm soyut yöntemleri ve özellikleri uygulaması için bu yöntemleri ve özellikleri sağlayan türetme sınıfı tarafından uygulanması için gerekli olan soyut temel sınıfları sağlar.

Soyut temel sınıflar hakkında daha fazla bilgi için aşağıdaki Web sitesini ziyaret edin:Bu nedenle, özetlemek için sağlayıcıları aracılar olarak denetimler tarafından veri deposuyla etkileşimde bulunmak için kullanılır. Aygıt sürücülerini sağlayan bir donanım aygıtından soyutlama aynı şekilde uygulama ve veri kaynağı arasında soyutlama sağlarlar.

Çünkü tartışacağız bu makalede konuşmaları üyelik sağlayıcıları hakkında ne ASP.NET 2.0 sınıflar için üyelik özelliği sağlar. ASP.NET 2.0 üyelik özelliği MembershipProvider sınıfı olarak adlandırılan bir soyut temel sınıf tanımlar. Ayrıca, MembershipProvider tüm sağlayıcılar için ortak bir sınıftır ProviderBase sınıf olarak adlandırılan farklı temel sınıfından türer. Bu nedenle, geliştiricilerin varolan MembershipProvider sınıf türeterek kendi sağlayıcı sınıfları oluşturabilirsiniz.

MembershipProvider ve ProviderBase sınıfları hakkında daha fazla bilgi için aşağıdaki Web sitelerini ziyaret edin:Biz üyelik sağlayıcısı tanımladıktan sonra yapılandırma dosyasında, (belirli bir Web uygulaması için) Web.config veya Machine.config (için tüm Web uygulamaları) açıklanmalıdır. Yapılandırma dosyasında ASP.NET tarafından sağlanan bilgileri çalışma anında uygun sağlayıcı örneği. Ancak, sağlayıcı da çalışma zamanında dinamik olarak değiştirmek mümkündür.

Üyelik sağlayıcısı yapılandırma ayarlarını belirtme hakkında daha fazla bilgi için aşağıdaki Web sitesini ziyaret edin:Şu anda, Login denetimini kullanan belirli bir veri düzeni/veri yapısı iki yerleşik üyelik sağlayıcıları ile birlikte gelir: Biz varolan bir veritabanı yapısı ile çalışmak istiyorsanız, ancak, biz kolayca eski veritabanı yapısında konuşmak için oturum açma denetimleri almak için özel üyelik sağlayıcısı kodlayabilirsiniz.

Özel üyelik sağlayıcısı oluşturma

Oturum açma denetimleri ve kullandıkları temel sağlayıcı modeli hakkında yeterli bilgiye sahibiz, özel veri depolamaya karşılık çalışmak için varolan oturum açma denetimleri almak için özel üyelik sağlayıcısı oluşturalım.

Not Özel sağlayıcı TestDBadında bir SQL Server veritabanını kullanır. TestDB UserID alanlara sahip Kullanıcılar , kullanıcı adı ve parola ve e-posta kimliği ve adresi gibi diğer bilgileri adlı bir tablo olacaktır.
  1. Microsoft Visual Studio 2005'i başlatın.
  2. Bir sınıf kitaplığı projesi oluşturun ve örneğin, CustomMembershipProviderLib gibi bir ad verin.
  3. Proje example,CustomMembershipProvider.cs için bir kaynak dosyası ekleyin.
  4. System.Web ve System.Configuration başvurular bölümünde bulunur.
  5. TheCustomMembershipProvider.cs dosyasında aşağıdaki isim uzayları bulunduğunu doğrulayın.
    using System;using System.Web;using System.Data;using System.Configuration;using System.Collections;using System.Web.Security;using System.Collections.Specialized;using System.Data.SqlClient;
  6. MembershipProvider sınıfı ile CustomMembershipProvider sınıf devralır.
    class CustomMembershipProvider : MembershipProvider
  7. Zaten biliyor gibi tüm abstractmethods CustomMembershipProvider sınıfındaki geçersiz kılmak ihtiyacımız MembershipProvider soyut bir sınıf olduğundan. Var. çok güzel bir özellik Visual Studio 2005 thatdoes bunu otomatik olarak Herhangi bir soyut sınıf, soyut sınıfjustright tıklatın, genişletmek ve ImplementAbstract Class' ı hemen. Bu, tüm theabstract yöntemleri için bildirimleri otomatik olarak yerleştirir. Her yöntemin gövdesini acommon kod satırını içerir göreceksiniz.
    throw new Exception("The method or operation is not implemented.");
    Bu, hangi özelliklerin sessionState tarafından desteklendiğini gösterir.

    Not Uygulama Başlatma yöntemi için zorunludur.
  8. Özel sağlayıcı aşağıdaki gibi afew özellik sağlayarak üzerinde odaklanacaktır:
    • CreateUserWizard denetimi kullanarak yeni bir kullanıcı oluşturma
    • Login denetimini kullanarak kullanıcı kimlik bilgileri doğrulanıyor
    Biz bu özellikleri tek tek gerçekleştireceksiniz. İlk olarak, Başlatma yöntemini uygulayın. ASP.NET tarafından bu yöntem çaðrýlýr, sağlayıcı IsLoaded. Ayrıca, uygulama firsttime için bunları kullanır ve uygulama etki alanı başına bir kez oluşturulur sağlayıcıları yüklenir.
    public override void Initialize(string name,NameValueCollection config){    // Verify that config isn't null    if (config == null)        throw new ArgumentNullException("config");    // Assign the provider a default name if it doesn't have one    if (String.IsNullOrEmpty(name))        name = "AspNetCustomMembershipProvider";    // Add a default "description" attribute to config if the    // attribute doesn't exist or is empty    if (string.IsNullOrEmpty(config["description"]))    {        config.Remove("description");        config.Add("description", "Custom SQL Provider");    }    // Call the base class's Initialize method    base.Initialize(name, config);}
  9. Daha sonra ValidateUser yöntemini uygulayın. Giriş kullanıcı adı alır ve eşleşen bir kullanıcı adı ve parola parola ve verifiesthat üyelik veri kaynağını içerir. İstemedikçe yöntem Login denetiminin kullanıcı doğrulaması geçmesine izin verir, true değerini döndürür. Aksi takdirde, bu kimlik bilgilerini yeniden ister.
    public override bool ValidateUser(string username, string password){    SqlConnection cnn = null;    SqlCommand cmd = null;    bool userExists = true;    try    {        cnn = new SqlConnection();        cnn.ConnectionString = "connection string for the existing data source";        cnn.Open();        string selectQry = "Select query for username and password";        cmd = new SqlCommand(selectQry, cnn);        SqlDataReader rdr = cmd.ExecuteReader();        if (!rdr.Read())            userExists = false;    }    catch (Exception ex)    {        throw ex;    }    finally    {        cmd.Dispose();        cnn.Close();    }    return userExists;}
  10. CreateUserWizard denetiminde adlı CreateUser adlı bir daha fazla yöntemini uygulayın. Bu, kullanıcı adı, parola, EpostaAdresi ve diğer bilgiler gibi girdi alır ve yeni bir kullanıcı varolan membershipdata kaynağına ekler. Daha yeni oluşturulan kullanıcı gösteren MembershipUser nesnesini döndürür. Kullanıcı başarıyla oluşturulup oluşturulmadığını belirten MembershipCreateStatus, ayrıca ayarlar. Theuser başarıyla oluşturulamadı, biz nedenini belirleyebilirsiniz.
    public override MembershipUser CreateUser(string username, string          password, string email, string passwordQuestion, string          passwordAnswer, bool isApproved, object providerUserKey,          out MembershipCreateStatus status){    SqlConnection cnn = null;    SqlCommand cmd = null;    MembershipUser newUser = null;    try    {        cnn = new SqlConnection();        cnn.ConnectionString = "connection string for the existing data source";        cnn.Open();        string insertQry = "Prepare the Insert query...";        cmd = new SqlCommand(insertQry, cnn);        cmd.ExecuteNonQuery();        // Right now I am giving default values for DateTime        // in Membership constructor.        newUser = new MembershipUser(        "AspNetCustomMembershipProvider",        username, null, String.Empty, String.Empty,         String.Empty, true, false, DateTime.Now,         DateTime.Now, DateTime.Now, DateTime.Now,         DateTime.Now        );        status = MembershipCreateStatus.Success;    }    catch (Exception ex)    {        status = MembershipCreateStatus.ProviderError;        newUser = null;        throw ex;    }    finally    {        cmd.Dispose();        cnn.Close();    }    return newUser;}
  11. Geri kalan yöntemleri görünümlü olanlar aşağıda verilen. Youwish, siz uygulayabilirsiniz, bunlardan herhangi birinin.
    // MembershipProvider Propertiespublic override string ApplicationName{    get { throw new NotSupportedException(); }    set { throw new NotSupportedException(); }}public override bool EnablePasswordRetrieval{    get { return false; }}public override bool EnablePasswordReset{    get { return false; }}public override int MaxInvalidPasswordAttempts{    get { throw new NotSupportedException(); }}public override int MinRequiredNonAlphanumericCharacters{    get { throw new NotSupportedException(); }}public override int MinRequiredPasswordLength{    get { throw new NotSupportedException(); }}public override int PasswordAttemptWindow{    get { throw new NotSupportedException(); }}public override MembershipPasswordFormat PasswordFormat{    get { throw new NotSupportedException(); }}public override string PasswordStrengthRegularExpression{    get { throw new NotSupportedException(); }}public override bool RequiresQuestionAndAnswer{    get { return false; }}public override bool RequiresUniqueEmail{    get { return false; }}public override MembershipUser GetUser(string username,    bool userIsOnline){    throw new NotSupportedException();}public override MembershipUserCollection GetAllUsers(int pageIndex,    int pageSize, out int totalRecords){    throw new NotSupportedException();}public override int GetNumberOfUsersOnline(){    throw new NotSupportedException();}public override bool ChangePassword(string username,    string oldPassword, string newPassword){    throw new NotSupportedException();}public override bool    ChangePasswordQuestionAndAnswer(string username,    string password, string newPasswordQuestion,    string newPasswordAnswer){    throw new NotSupportedException();}public override bool DeleteUser(string username,    bool deleteAllRelatedData){    throw new NotSupportedException();}public override MembershipUserCollection    FindUsersByEmail(string emailToMatch, int pageIndex,    int pageSize, out int totalRecords){    throw new NotSupportedException();}public override MembershipUserCollection    FindUsersByName(string usernameToMatch, int pageIndex,    int pageSize, out int totalRecords){    throw new NotSupportedException();}public override string GetPassword(string username, string answer){    throw new NotSupportedException();}public override MembershipUser GetUser(object providerUserKey,    bool userIsOnline){    throw new NotSupportedException();}public override string GetUserNameByEmail(string email){    throw new NotSupportedException();}public override string ResetPassword(string username,    string answer){    throw new NotSupportedException();}public override bool UnlockUser(string userName){    throw new NotSupportedException();}public override void UpdateUser(MembershipUser user){    throw new NotSupportedException();}
  12. Sınıf kitaplığı projesi derleyin. Onu DLLoutput oluşturur.
  13. Varolan bir Web sitesini açın veya yeni bir Web sitesi oluşturun.
  14. Web sitesinde DLL başvurusu ekleyin.
  15. Sağlayıcı Web.config dosyasında aşağıdaki gibi kaydedebilirsiniz.
    <membership defaultProvider="AspNetCustomMembershipProvider">  <providers>    <clear />    <add  name="AspNetCustomMembershipProvider"	type="CustomMembershipProvider"/>  </providers></membership>
  16. Login denetiminin kullanıldığı Login.aspx adlı bir Web Forms sayfasına ekleyin.
    <form id="Form1" runat="server">  <div>    <asp:Login ID="Login1" runat="server"></asp:Login>  </div></form>
  17. CreateUserWizard denetiminin kullanıldığı CreateUser.aspx adlı başka bir Web Forms sayfasına ekleyin.
    <form id="Form1" runat="server">  <div>    <asp:CreateUserWizard ID="CreateUserWizard1" runat="server"></asp:CreateUserWizard>  </div></form>
  18. Web formları sayfaları her ikisini de çalıştırın ve Output görürsünüz.
Visual Studio kullanmıyorsanız, aşağıdaki adımları gerçekleştirebilirsiniz:
  1. Herhangi bir metin düzenleyicisinde açın.
  2. 17-5 adımda verilen yönergeleri izleyin ve CustomMembershipProvider.cs adlı bir dosya oluşturun.
  3. Wwwroot klasörünün altında bir dizin oluşturun.
  4. Microsoft Internet Information Services (IIS) Yöneticisi'ni başlatın ve yeni bir dizin sanal kök dizini olarak işaretleyin. Ayrıca, ensurethat caseanother .NET Framework sürümü Microsoft .NET Framework 2.0 altında çalışacak biçimde yapılandırılmış bir bilgisayarda yüklü.
  5. Web formları sayfaları ve Web.config içinde thatdirectory kopyalayın.
  6. Newdirectory altında bir App_Code klasörünü oluşturun.
  7. App_Codefolder CustomMembershipProvider.cs dosyasını kopyalayın.
  8. CreateUser.aspx Web Forms sayfasında IISManager çalıştırın.

Sonuç

Şey, artık özel üyelik sağlayıcıları için. Bu sütun, özel üyelik sağlayıcılarını ve soyutlama son kullanıcıya nasıl sağladıkları oluşturma temellerini anlamanıza yardımcı olur umarım.

Zaman için teşekkür ederiz. ASP.NET 2.0 ve biz onları bizim gereksinimlerine uygun davranışlarını özelleştirmek için nasıl genişletebilirsiniz tarafından sağlanan sağlayıcılar hakkında daha fazla bilgi yazmak bekler.

Sağlayıcılar hakkında daha fazla bilgi için aşağıdaki Web sitelerini ziyaret edin:
Sağlayıcı Araç Seti
http://msdn2.microsoft.com/en-us/ASP.NET/aa336558.aspx

Sağlayıcı modeli tasarım deseni ve belirtimi, bölüm 1
http://msdn2.microsoft.com/en-us/library/ms972319.aspx

Sağlayıcı tasarım deseni, bölüm 2
http://msdn2.microsoft.com/en-us/library/ms972370.aspx
Her zaman, göndermek istediğiniz fikirler konularda ücretsiz havaya gelecekteki sütunları olarak veya kullanarak Bilgi Bankası İsteyin Form.

Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 910440 - Son İnceleme: 05/07/2016 22:04:00 - Düzeltme: 2.0

Microsoft ASP.NET 2.0

  • kbprogramming kbsecurity kbcode kbhowto kbmt KB910440 KbMttr
Geri bildirim