У меня есть пользовательский поставщик ролей, который получает роли, к которым принадлежит пользователь, из базы данных. У меня также есть специальный модуль аутентификации, зарегистрированный в httpModules моего web.config, который отслеживает входящие HTTP-запросы и (если это подписанный запрос OAuth) устанавливает свойство HttpContext.Current.User для олицетворения пользователя, а установленный им IPrincipal включает в себя все роли пользователя, плюс дополнительная, называемая «делегированная».
Проблема в том, что после того, как я установил свой собственный IPrincipal, по-видимому, ASP.NET по-прежнему вызывает мой поставщик пользовательских ролей, а затем сбрасывает IPrincipal с тем, у которого есть только стандартные роли для этого пользователя.
Если я установлю <roleManager enabled="false" ...>
в моем файле web.config, назначенные роли модуля аутентификации останутся неизменными. Хотя, очевидно, я хочу лучшего из обоих миров. Как я могу использовать поставщика ролей, но «отменить» эффект поставщика ролей, когда мой модуль аутентификации примет решение?