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]));
    }

これにより、カスタム メンバーシップとロール プロバイダーがディクショナリに機能なしで追加されます。つまり、ユーザーとロールのすべての作成/編集が無効になります。

次のアクションを使用できます: 更新、作成、削除。Update と Create のみが必要な場合は、0 を次のように置き換えます。

ProviderCapabilities.Action.Update | ProviderCapabilities.Action.Create

Action 列挙には、属性Flagsがあります。

于 2016-08-03T11:23:10.747 に答える