0

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

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

enter image description here

Так что вопрос в том, как мы это делаем с нашими поставщиками на заказ?

ответ

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 

Действие перечислимого типа имеют атрибут Flags.