2009-02-26 18 views
1

Sağlayıcı desenini özel bir web denetiminde uygulamaya çalışıyorum. Hala deseni anlamaya çalışıyorum ve şu sorularım var.Sağlayıcı Deseni ve VarsayılanProvider

Varsayılan sağlayıcı, denetim yüklendiğinde her zaman kullanılacak sağlayıcı mı? Sağlayıcının kullandığını söyleyebildiğim kadarıyla her zaman öntanımlı olacağım, ancak MSDN belgelerinin sağlayıcının seçimine izin veren sunucu denetimlerinin, varsayılanProvider değerine varsayılan olması gereken Sağlayıcı özelliğine sahip olması gerektiğinden emin olmadığından emin değilim. Bana göre, bu denetim sağlayıcısı Config dosyasında olduğu sürece, belirli bir sağlayıcıyı Provider özelliğine dayalı olarak yükleyebilir. Bu doğru mu? Bu nedenle, belirli bir sağlayıcı istenmezse varsayılan sağlayıcı iade edilir.

Sağlayıcıları değiştirmek için config dosyasında varsayılan provideri değiştirmem uygun olur mu? < - Bunun yanlış olduğunu düşünüyorum, sadece defaultProvider değerini döndürürdü.

Bu doğru mu? Bir denetimde varsayılan provider, kontrolün OnLoad olay yöntemine yüklenir mi? Kontrol verisini sağlayıcıya bağlı olarak farklı kaynaklardan iletmem gerekiyor, ancak sonuçta elde edilen veriler bir sınıfa yerleştirilecek. Kontrolün kendisini işlemek için kullanacağı.

Verileri sayfaya nasıl kontrol edeceğimi de kafam karıştı mı? Benim ProviderBase ben LoadData yöntemi uygulayacağını benim SQLCustomerProvider içinde Sonra

LoadData

adlı bir yöntem olduğunu varsayalım , Tamam benim özel verileri okumak ve sınıfa yüklemek için buraya bu kodu özelleştirmek veya sayfa denetimi yükünü kullanarak gerektiğidir veriyi sınıfa mı?

Teşekkürler!

cevap

1

Ben sağlayıcılarının bilgim Üyelik/Profil/Roller onları yazmakla sınırlı olduğu ön kabul edeceğiz, ama genel şeyler hala geçerli olmalıdır: Eğer geliştiriciye izin sürece

oppertunity farklı belirtmek için sağlayıcı, daha sonra evet, varsayılan sağlayıcı kullanılacak olanıdır. Eğer web.config aşağıdaki olsaydı

Yani, örnek olarak kimlik doğrulaması alarak:

<membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="20"> 
    <providers> 
    <remove name="AspNetSqlProvider" /> 
    <add name="SqlProvider" 
     type="System.Web.Security.SqlMembershipProvider" 
     connectionStringName="SqlServices" 
     enablePasswordRetrieval="false" 
     enablePasswordReset="true" 
     requiresQuestionAndAnswer="true" 
     passwordFormat="Hashed" 
     applicationName="/" /> 
    <add name="AdProvider" 
     type="System.Web.Security.ActiveDirectoryMembershipProvider" /> 
    </providers> 
</membership> 

bir sayfada bir yerlerde bir Girişi denetimi eklediğinizde, o zaman SqlProvider kullanacağını söyledi. Bir yöntem kaynağı olabilir

  • Girişi denetimlere çağrılacak

    1. Sen Girişi kontrolünün MembershipProvider özelliğini kullanarak farklı bir sağlayıcı belirtebilirsiniz:

      iki yoldan birinde farklı sağlayıcı kullanabilirsiniz Sağlayıcınızı bulabileceğiniz Authenticate etkinliği.

    yöntemin 2'nin bir örnek: Eğer kendi kumanda üzerindeki bu yapabileceğini

    private void OnAuthenticate(object sender, AuthenticateEventArgs e){ 
        bool authenticated = false; 
    
        MembershipProvider sqlProvider = Membership.Providers["SqlProvider"]; 
    
        authenticated = sqlProvider.ValidateUser(Login1.UserName, Login1.Password); 
    
        if (!authenticated){ 
        // User not found in database, try Active Directory: 
        MembershipProvider adProvider = Membership.Providers["AdProvider"]; 
        authenticated = adProvider.ValidateUser(Login1.UserName, Login1.Password); 
        } 
    
        e.Authenticated = authenticated; 
    } 
    

    diğer yolları bir Sağlayıcı özelliğini açığa, ancak bir değer olup olmadığını görmek için kontrol edin ve kullanımı olduğunu defaultProvider yerine sağlayıcısı.arasında AspNetSqlMembershipProvider uygulanma bütün amacı - bir MembershipUser dönmek böylece Üyelik sağlayıcıları tüm bir yöntem GetUser (örneğin) sahip -

    Genellikle sağlayıcı modeli, bilinen bir sınıfa davranış varsayılan birtakım sağlamak için kullanılmıştır GetUser, MembershipUser verilerini ASP.NET SQL veritabanından yüklemektir - bunu, bu eylemde Sample Membership Provider

    'da görebilirsiniz. Umarım yardımcı olur!