0

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

由于系统中的用户创建很复杂,我们不希望/不能允许从 Episerver 的管理界面内部创建/编辑。我们知道这是为WindowsMembershipProvider完成的,页面仍然存在,但字段被禁用,并且有一个信息文本通知您此提供程序不支持创建/编辑。它看起来像下面的图像。

在此处输入图像描述

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

4

1 回答 1

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

Action 枚举具有属性Flags

于 2016-08-03T11:23:10.747 回答