我有一个遗留系统(sitecore 6.1),它在plave中已经有一个配置文件提供程序作为admin部分的默认配置文件。
现在,我需要为普通用户阻止另一个自定义的SQL配置文件提供程序(在另一个表中)。
但我的问题是剂量系统如何知道在代码中使用哪个配置文件提供程序?
有什么我可以做的类似:
System.Web.Security.Membership.Providers[providerString];
这样我就可以相应地在我的代码中调用自定义配置文件提供程序。
或者在这种情况下最佳做法是什么。
我浪费了1小时尝试通过sitecore文档,但那里没有多少。
答案 0 :(得分: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));
}
}
}