Одновременное использование нескольких поставщиков ролей ASP.NET - PullRequest
4 голосов
/ 18 декабря 2009

Я занимаюсь разработкой системы ASP.NET, которая имеет два разных «уровня» ролей. Основной уровень будет использовать группы Active Directory для определения членства, а второй уровень будет использовать базу данных. У всех пользователей будет роль AD уровня 1, но не у всех пользователей будет роль базы данных уровня 2.

Я знаю, что могу использовать AspNetWindowsTokenRoleProvider для управления ролями AD, и я знаю, что могу использовать SqlRoleProvider для управления ролями базы данных ... что я хотел бы сделать, это использовать оба одновременно - возможно ли это?

Ответы [ 2 ]

4 голосов
/ 18 декабря 2009

Я бы порекомендовал получить из WindowsTokenRoleProvider, затем переопределить GetAllRoles, GetRolesForUser и т. Д.

Сначала вызовите базовый класс, а затем добавьте соответствующий список ролей из вашей базы данных.


Кстати, в качестве ключа базы данных я бы порекомендовал использовать SID учетной записи (или ее хэш) вместо строки DOMAIN\username, поскольку имя пользователя может измениться (брак и т. Д.) И оставить потерянные записи роли. Бывает чаще, чем вы ожидаете: - (

2 голосов
/ 18 декабря 2009

Поставщики построены так, чтобы быть «подключаемыми» - теоретически вы можете подключить тот, который вам нужен, и заставить его работать. Они также задокументированы, так что вы можете расширить существующие или использовать свои собственные.

По сути, вам нужен собственный провайдер, который позволит вам объединить два - для этого вы можете либо, как предложено @devstuff, наследовать от одного или другого, а затем объединить результаты в переопределенных методах или создать фактически является прокси-классом (возможно, для шаблона существует правильное имя), который имеет экземпляры поставщика AD и SQL, передает вызовы и объединяет результаты таким образом.

Однако в основном ответ заключается в том, чтобы создать собственного провайдера, объединив двух провайдеров акций для удовлетворения ваших конкретных требований.

...