2012-02-27 210 views
0

我有一箇舊系統(sitecore 6.1),它已經有一個配置文件提供程序作爲管理部分的默認配置文件。通過配置文件名稱呼叫配置文件提供程序配置

現在,我需要爲普通用戶推出另一個自定義SQL配置文件提供程序(在不同的表中)。

但我的問題是如何劑量系統知道在代碼中使用哪個配置文件提供程序?

有沒有我可以做任何類似的事情:

System.Web.Security.Membership.Providers[providerString]; 

所以,我可以在我的代碼調用相應的自定義配置文件提供者。

或者在這種情況下最好的做法是什麼。

我已經浪費了1小時試圖通過sitecore文檔,但沒有太多可用的地方。

+0

有關詳細信息,請參見本如何堵塞更安全提供到Sitecore的:http://sdn.sitecore.net/Articles/Security/Low_level_Sitecore_Security_and_Custom_Providers.aspx – 2012-02-27 08:36:23

+0

@YanSklyarenko感謝您的鏈接。有沒有我可以參考的示例代碼。謝謝 – 2012-02-27 22:55:32

+1

有一個名爲YAFIntegration(另一個論壇集成)的共享源項目。它實現了整套提供程序,您可以將其用作樣本(儘管不是微不足道的)。這裏是鏈接:http://trac.sitecore.net/YAFIntegration – 2012-02-28 09:59:21

回答

0

下面是我最近爲使用電子郵件營銷管理器爲客戶設置一些自定義配置文件的一些代碼。授予此代碼使用特定於ECM的某些類,它創建一個新用戶,初始化一個配置文件類,然後將該配置文件分配給新用戶。然後它爲剛剛創建的用戶設置一些自定義屬性。它向您展示瞭如何根據用戶調用配置文件以及如何爲該用戶分配配置文件。這可能有助於或可能幫助別人。

public static void Process(List<Subscriber> userItems, Item targetAudienceDefinitionItem) 
    { 
     foreach (Subscriber user in userItems) 
     { 
      // you can also just pass it the id of the target audience as a string 
      Sitecore.Modules.EmailCampaign.TargetAudienceBase target = Sitecore.Modules.EmailCampaign.TargetAudience.FromItem(targetAudienceDefinitionItem); 

      string campaignname = target.ManagerRoot.Settings.CommonDomain; 
      string realUsername = campaignname + "\\" + user.UserName; 

      using (new SecurityDisabler()) 
      { 
       User newUser; 
       if (!Sitecore.Security.Accounts.User.Exists(realUsername)) 
       { 
        // create a new user and assign it to the email domain specified in the manager root item 
        newUser = Sitecore.Security.Accounts.User.Create(campaignname + "\\" + user.UserName, System.Web.Security.Membership.GeneratePassword(8,1)); 
       } 
       else 
        // get back the existing user 
        newUser = User.FromName(realUsername, false); 

       // get back the current user profile 
       UserProfile subscriber = newUser.Profile; 

       // reset the profile to be the profile specified in the manager root 
       subscriber.ProfileItemId = target.ManagerRoot.Settings.SubscriberProfile; 
       subscriber.Save(); 

       // built in properties are set like this 
       subscriber.Email = user.Email; 

       // set custom property value 
       subscriber["Address"] = user.Address; 


       // or long method 
       subscriber.SetCustomProperty("Address", user.Address); 

       subscriber.Save(); 
       // now subscribe the user to the target audience subscriber list 
       target.Subscribe(Contact.FromName(newUser.Name)); 

      } 
     } 
    }