Отключить создание/редактирование/удаление пользователей/ролей в Episerver с помощью пользовательского MembershipProvider

В недавнем веб-проекте нам нужно было внедрить и использовать настраиваемых поставщиков членства/ролей для Active Directory, так как нам нужно было обработать несколько конкретных случаев. У нас не было серьезных проблем с созданием и использованием этих провайдеров, но мы столкнулись с проблемой с Episerver.

Поскольку создание пользователя в системе сложное, мы не хотели/не могли разрешить создание/редактирование из административного интерфейса Episerver. Мы знали, что это сделано для WindowsMembershipProvider, страницы все еще там, но поля отключены, и есть информационный текст, который информирует вас о том, что создание/редактирование не поддерживается этим провайдером. Это похоже на изображение ниже.

введите здесь описание изображения

Итак, вопрос в том, как нам добиться этого с помощью наших пользовательских провайдеров?


person SpaceOgre    schedule 03.08.2016    source источник


Ответы (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.

person SpaceOgre    schedule 03.08.2016