Я создаю настраиваемого поставщика ролей на основе поставщика ролей ASP.NET. У меня 3 стола. Один для пользователей, один для ролей, один для UsersInRoles. Таблица Users не имеет столбца пароля, потому что пользователи аутентифицированы с помощью ActiveDirectory. Это мой подход до сих пор. Я не могу заставить работать cusstom Role Provider, у кого-то такая же ситуация, как у меня. Как сделать так, чтобы поставщик настраиваемых ролей работал с AD?
Пользовательский поставщик ролей с аутентификацией ActiveDirectory
Ответы (2)
Что я сделал: создал класс, унаследованный от System.Web.Security.RoleProvider
, и выбрал «Реализовать абстрактный класс» из контекстного меню при нажатии на : Roleprovider
. Я реализовал только метод GetRolesForUser
(остальные методы бросают NotImplementedException
).
В какой-то момент я подумал, что мне также нужно реализовать MembershipProvider, но простое добавление к web.config исправило его (поскольку сборка не находится в GAC, в атрибуте type вам нужно только указать пространство имен + type- имя; не имя сборки и другие параметры):
<configuration>
<system.web>
<roleManager enabled="true" defaultProvider="MyRoleProvider">
<providers>
<clear />
<add name="MyRoleProvider" type="Namespace.To.MyRoleProvider" />
</providers>
</roleManager>
</system.web>
</configuration>
Нет необходимости реализовывать метод ValideUser
на MembershipProvider
.
Вы должны иметь возможность написать поставщика ролей таким образом, чтобы вы переопределили метод ValidateUser () и заставили его выполнять там поиск в AD. После этого большая часть встроенного материала должна взять верх.