Makale numarası: 910440 - Son Gözden Geçirme: 22 Kasım 2007 Perşembe - Gözden geçirme: 1.4

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

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.
ASP.NET Destek Sesi Sütunu

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

Bu sütun için kendi gereksinimlerinize göre özelleştirmenin sizi ilgilendiren konular hakkındaki fikirlerinizi göndermeye davet etmek isteriz ve gelecekte Knowledge Base makaleleri ve Destek Sesi sütunu görmek istediğiniz sorunlar giderilmiştir. Kendi fikirleri ve Ask For It (http://support.microsoft.com/common/survey.aspx?scid=sw;en;1176&p0=&p1=&p2=&p3=&p4=) formunu kullanarak geri besleme gönderebilirsiniz. Formun alt kısmındaki bu sütunun. bağlantı da orada

Bu Sayfada

Hepsini aç | Hepsini kapa

Giriş

Var sayılma ve Hoş Geldiniz arka! Adımın Parag Agarwal; bir destek mühendisine burada Microsoft'ta olduğum. Bu ay size güzel özelliğinde başka bir Microsoft ASP.NET 2.0 için oturum açma denetimlerini sağlayıcılarını yönetme tartışmak için kullanacağınız.

GENEL BAKIŞ

Bu ayın sütununda MIYIM aşağıdaki konular ele alınmaktadır:
  • Oturum açma denetimleri kısa genel bakış
  • ASP.NET'te <a1>Sağlayıcı</a1> modelinin kısa bir genel 2.0
  • Özel bir sağlayıcı, oluşturma konusunda adım adım işlem aşamaları, oturum açma denetimi varolan bir veri kaynağı tarafından kullanılabilir

Oturum açma denetimi

Bu, hemen hemen her Web uygulamasında oturum açma işlevselliği sağlamak için çok ortak bir gereksinim olur. ASP.NET 2. 0'ın yayımlanan önce size kullanıcı kimlik doğrulaması için kullanılan kullanıcı arabirimi (UI) tasarlamak için kullanılır. Bu alan, çok fazla kod yazma. Bunu önlemek için <a0></a0>, ASP.NET 2.0 biçiminde bir y???n sunucu denetimleri, oturum açma tamamlanamıyor çözüm yok programlama gerektiren Web uygulamaları sağlar. Dahili olarak, bu denetimleri kullanıcı girebilecekleri uygun kullanıcı ARABIRIMININ kendi kimlik bilgilerini oluşturma için sorumlu olan ve bunları doğrulamak. Şimdi, UI sayfa geliştirici olarak tasarlamak yoksa ve kullanıcı kendi kod yazarak kimlik doğrulaması karşılamaya gerekmez. Oturum açma denetimi tarafından kullanılan temel sağlayıcı modeli alır, üstlenir. Sonraki bölümde kullanıcı kimlik doğrulaması için oturum açma denetimi sağlayıcılar nasıl kullandığını görürsünüz. Oturum açma denetimleri ve nasıl sizi aşağıdaki Web sitesinde kullanılmadan hakkında daha fazla bilgi bulabilirsiniz:
http://msdn2.microsoft.com/en-us/library/ms178329.aspx (http://msdn2.microsoft.com/en-us/library/ms178329.aspx)

Sağlayıcı modeli

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

Soyut temel sınıfları hakkında daha fazla bilgi için aşağıdaki Microsoft Web sitesini ziyaret edin:
http://msdn2.microsoft.com/en-us/library/k535acbf(vs.71).aspx (http://msdn2.microsoft.com/en-us/library/k535acbf(vs.71).aspx)
Bu nedenle, özetlemek için <a0></a0>, sağlayıcıları aracılar denetimler tarafından veri deposu ile etkileşimli çalışmak için kullanılır. Aynı şekilde bir donanım aygıtından Özet aygıt sürücülerini sağlayan uygulama ve veri kaynağı arasında Özet sağlarlar.

Bu makale konuştuğunu üyelik sağlayıcılarını hakkında size tartışılacak çünkü ne ASP.NET 2.0 sınıfları için <a2>Üyelik</a2> özelliği sağlar. ASP.NET 2.0 üyeliği özelliği MembershipProvider sınıf adı verilen bir soyut temel sınıfı tanımlar. Ayrıca, gelen tüm sağlayıcılar için sık kullanılan bir sınıftır ProviderBase sınıfı olarak adlandırılan, farklı bir temel sınıf MembershipProvider türetir. Bu nedenle, geliştiricilerin varolan MembershipProvider sınıfı türetmek tarafından 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:
http://msdn2.microsoft.com/en-us/library/system.web.security.membershipprovider.aspx (http://msdn2.microsoft.com/en-us/library/system.web.security.membershipprovider.aspx)

http://msdn2.microsoft.com/en-us/library/system.configuration.provider.providerbase.aspx (http://msdn2.microsoft.com/en-us/library/system.configuration.provider.providerbase.aspx)
Biz üyelik sağlayıcısı tanımladıktan sonra bunu bir yapılandırma dosyasında (tüm Web uygulamaları için) Machine.config veya Web.config (için belirli bir Web uygulaması) açıklanan gerekir. Yapılandırma dosyasında ASP.NET tarafından sağlanan bilgilerle çalıştırma süresinde, uygun sağlayıcı örneği. Bununla birlikte, sağlayıcı, aynı zamanda çalışma anında dinamik olarak değiştirmek mümkündür.

Bir üyelik sağlayıcısı için yapılandırma ayarlarını belirtme hakkında daha fazla bilgi için aşağıdaki Microsoft Web sitesini ziyaret edin:
http://msdn2.microsoft.com/en-us/library/ms178329.aspx (http://msdn2.microsoft.com/en-us/library/ms178329.aspx)
Şimdi sağ, oturum açma denetimi belirli veri düzenini/veri yapısı'nı kullanan iki yerleşik üyelik sağlayıcısı ile birlikte gelir: Size varolan bir veritabanı yapısıyla çalışmak istiyorsanız, ancak size kolayca eski veritabanı yapısına anlaşmak için oturum açma denetimleri almak için bir özel üyelik sağlayıcısı kodu.

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

Oturum açma denetimleri ve kullandıkları temel sağlayıcı modeli yeterli bilgi bölümlerimiz artık, şimdi karşı özel veri deposu çalışmak için varolan oturum açma denetimleri almak için bir özel üyelik sağlayıcısı oluşturun.

Not Özel sağlayıcısı TestDB adlı SQL Server veritabanını kullanır. TestDB KullanıcıKimliği alanlara sahip kullanıcılar, UserName, parola ve e-posta KIMLIĞI ve adres gibi diğer bilgileri adlı bir tablo olur.
  1. Microsoft Visual Studio 2005'i başlatın.
  2. Sınıf kitaplığı proje oluşturmak ve bu CustomMembershipProviderLib gibi bir ad verin.
  3. Bir kaynak dosyası projeye, örneğin CustomMembershipProvider.cs ekleyin.
  4. System.Web ve System.Configuration başvuru bölümü içerir.
  5. Aşağıdaki ad CustomMembershipProvider.cs dosya
    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;
    içerdiği doğrulayın.
  6. MembershipProvider RESULTCLASS ile CustomMembershipProvider sınıf
    class CustomMembershipProvider : 
    MembershipProvider
  7. Zaten biliyoruz, CustomMembershipProvider sınıfı Soyut yöntemler tüm geçersiz kılmak gerekir; böylece MembershipProvider bir soyut sınıf aynıdır. Bunu otomatik olarak yapar, Visual Studio 2005'te çok güzel bir özellik yok. Herhangi bir soyut sınıf genişletme hemen sonra yalnızca Özet sınıf ' ı sağ tıklatın ve sonra Gerçekleştir soyut sınıf. Soyut yöntemler için bildirimleri otomatik olarak koyar. Gövdesi her yöntemi için bir genel kod satırının içerdiğini görürsünüz.
    throw new Exception("The method or operation is not implemented.");
    Bu, hangi özelliklerin, özel sağlayıcı tarafından desteklendiğini gösterir.

    Not Uygulama başlatma yöntemi için zorunludur.
  8. Özel sağlayıcısında, size aşağıdaki gibi birkaç özellikleri sağlayan üzerinde ö?renmeye:
    • CreateUserWizard denetimini kullanarak yeni bir kullanıcı oluşturma
    • Oturum açma denetimini kullanarak kullanıcı kimlik bilgileri doğrulanıyor
    Size bu özellikleri tek tek uygular. Önce ınitialize yöntemini uygular. Bu yöntem, ASP.NET tarafından sağlayıcı yüklendiğinde çağrılır. Ayrıca sağlayıcıları uygulama ilk kez bunları kullanır ve bir kez uygulama etki alanı. oluşturuldukları 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. Ardından, ValidateUser yöntemini uygular. Bu girdi bir kullanıcı adı ve parola ve üyeliği veri kaynağının bir eşleşen bir kullanıcı adı ve parola içerdiğini doğrular. Yöntem true döndürüyorsa, oturum açma denetimi kullanıcı doğrulaması geçmesine izin verir. Aksi halde, 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. CreateUserCreateUserWizard denetim tarafından çağrılan adlı bir daha fazla yöntem kullanır. Bu, kullanıcı adı, parola, e-posta adresini ve diğer bilgileri gibi girdi alır ve yeni bir kullanıcı, veri kaynağında varolan üyeliğine ekler. Yeni oluşturulan kullanıcı temsil eden MembershipUser nesnesi geri döndürür. Ayrıca, kullanıcı başarıyla oluşturulduğunu bildirir MembershipCreateStatus, ayarlar. Kullanıcı başarıyla oluşturuldu, nedeni sizin belirtebilirsiniz.
    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. Aşağıda verilen gibi yöntemler görünümünü geri kalanı. Isterseniz, bunları birini uygulayabilirsiniz.
    // MembershipProvider Properties
    public 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ığı Projeyi derleyin. Dll DOSYASıNı oluşturan çıktı.
  13. Varolan bir Web sitesini açın veya yeni bir Web sitesi oluşturun.
  14. DLL başvuru Web sitesinde ekleyin.
  15. Sağlayıcı, Web.config dosyasında aşağıdaki gibi kaydedin.
    <membership defaultProvider="AspNetCustomMembershipProvider">
      <providers>
        <clear />
        <add  name="AspNetCustomMembershipProvider"	type="CustomMembershipProvider"/>
      </providers>
    </membership>
  16. Oturum açma denetimi kullanılabilir 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 denetimi kullanılabilir 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 birden çalıştırmak ve çıktı bir randevu oldu?unu görecektir.
Visual Studio'nun kullanıyorsanız, aşağıdaki adımları gerçekleştirebilirsiniz:
  1. Herhangi bir metin düzenleyicisini açın.
  2. CustomMembershipProvider.cs adlı bir dosya oluşturun ve 17'den 5 adımda verilen yönergeleri izleyin.
  3. Wwwroot klasörünün altındaki bir dizin oluşturun.
  4. Başlangıç Microsoft ınternet ınformation Services (IIS) Yöneticisi ve işareti sanal kök dizini olarak yeni bir dizin. Ayrıca, bu durumda başka bir .NET Framework sürümü bilgisayarda yüklü olan Microsoft .NET Framework 2.0 altında çalıştırmak için yapılandırıldığından emin olun.
  5. Web formları sayfaları ve Web.config bu dizine kopyalayın.
  6. Bir App_Code klasör altında yeni bir dizin oluşturun.
  7. Içinde App_Code CustomMembershipProvider.cs dosya kopyalama klasörü.
  8. Web formları CreateUser.aspx sayfayı IIS Yöneticisi'nden çalıştırın.

Sonuç

Tüm alan üzerinde özel üyelik sağlayıcılarını şimdilik. Bu sütun Özet son kullanıcıya nasıl sağladıkları <a0>özel üyelik sağlayıcılarını ve</a0>'ı oluşturma temelleri anlamanıza yardımcı olacak, Umarım.

Zaman için teşekkürler. ASP.NET 2. 0'ı ve sizi kendi gereksinimlerine göre kendi davranışını özelleştirmek için bunları nasıl genişletebilirsiniz tarafından sağlanan sağlayıcılar hakkında daha fazla yazma bekler.

Sağlayıcılar hakkında daha fazla bilgi için aşağıdaki Web sitelerini ziyaret edin:
Sağlayıcı bir araç seti
http://msdn2.microsoft.com/en-us/asp.net/aa336558.aspx (http://msdn2.microsoft.com/en-us/asp.net/aa336558.aspx)

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

Sağlayıcı, Desen, Bölüm 2 tasarlama
http://msdn2.microsoft.com/en-us/library/ms972370.aspx (http://msdn2.microsoft.com/en-us/library/ms972370.aspx)
Her zaman olarak, gelecekte sütunları adreslenmiş istediğiniz konuları veya bilgi bankasının Ask For It (http://support.microsoft.com/common/survey.aspx?scid=sw;en;1176&p0=&p1=&p2=&p3=&p4=) formunu kullanarak fikir gönderme bildirmekten çekinmeyin.

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft ASP.NET 2.0
Anahtar Kelimeler: 
kbmt kbprogramming kbsecurity kbcode kbhowto KB910440 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:910440  (http://support.microsoft.com/kb/910440/en-us/ )
Retired KB ArticleKullanı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.