在最近的一个Web项目中,我们需要为Active Directory实现和使用自定义成员资格/角色提供程序,因为我们需要处理一些特定的案例。我们没有创建和使用这些提供商的实际问题,但我们遇到了Episerver的问题。
由于系统中的用户创建很复杂,我们不希望/不允许从Episerver的管理界面内创建/编辑。我们知道这是针对 WindowsMembershipProvider 完成的,页面仍然存在,但字段已禁用,并且有一个信息文本通知您此提供程序不支持创建/编辑。它看起来像图像。
所以问题是我们如何通过自定义提供商实现这一目标?
答案 0 :(得分:1)
最后解决方案很简单,很容易找到。
Episerver使用字典来存储提供程序的功能,默认情况下会添加SqlMembershipProvider和WindowsMembershipProvider等默认提供程序。字典的关键是提供者类型(Episerver 6)。
添加新条目的方法是公开的,因此我们只需要将以下代码添加到Global.asax.cs。
protected void Application_Start(object sender, EventArgs e)
{
RegisterCapabilitiesOnMembershipProviders();
}
private static void RegisterCapabilitiesOnMembershipProviders()
{
ProviderCapabilities.AddProvider(typeof(CustomActiveDirectoryMembershipProvider), new ProviderCapabilitySettings(0,new string[0]));
ProviderCapabilities.AddProvider(typeof(CustomActiveDirectoryRoleProvider), new ProviderCapabilitySettings(0, new string[0]));
}
这会将我们的自定义成员资格和角色提供程序添加到没有功能的字典中,这意味着所有用户和角色的创建/编辑都被禁用。
可以使用以下操作:更新,创建,删除。如果您只想要更新和创建,请将0替换为:
ProviderCapabilities.Action.Update | ProviderCapabilities.Action.Create
动作枚举具有属性标志。