使用自定义 MembershipProvider 在 Episerver 中禁用 create/edit/remove users/roles

Disable create/edit/remove users/roles in Episerver with custom MembershipProvider

在最近的一个 Web 项目中,我们需要为 Active Directory 实施和使用自定义 Membership/Role 提供程序,因为我们需要处理一些特定情况。我们在创建和使用这些提供程序时没有遇到真正的问题,但我们 运行 遇到了 Episerver 的问题。

由于系统中的用户创建很复杂,我们不允许 want/could 不允许 creation/edit 来自 Episerver 的管理界面。我们知道这是针对 WindowsMembershipProvider 完成的,页面仍然存在,但字段已禁用,并且有一条信息文本通知您 creation/edit 不受此支持提供商。它看起来像下面的图像。

所以问题是我们如何使用我们的自定义提供程序来实现这一点?

最终,解决方案非常简单明了,但很难找到。

Episerver 使用字典存储提供者的功能,默认情况下会添加 SqlMembershipProvider 和 WindowsMembershipProvider 等默认提供者。字典的键是提供者类型 (Episerver 6)。

添加新条目的方法是 public 所以我们只需要将以下代码添加到 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]));
    }

这会将我们的自定义成员资格和角色提供者添加到没有功能的字典中,这意味着所有 create/edit 用户和角色都被禁用。

可以执行以下操作:更新、创建、删除。如果您只想更新和创建,请将 0 替换为:

ProviderCapabilities.Action.Update | ProviderCapabilities.Action.Create

Action 枚举具有属性 Flags