Пользовательский поставщик ролей с аутентификацией Windows
У нас есть собственный поставщик ролей на сайте интрасети веб-форм ASP.NET. Мы позаботились о том, чтобы этот класс наследовал от RoleProvider и реализовал соответствующие методы. Однако ясно, что его методы не вызываются, включая Initialize. У нас есть следующее в web.config:
<authentication mode="Windows" />
<authorization>
<allow roles="CRM"/>
<deny users="?"/>
</authorization>
<roleManager defaultProvider="MyRoleProvider"
enabled="true"
cacheRolesInCookie="true">
<providers>
<clear />
<add
name="MyRoleProvider"
applicationName="MyApp"
type="MyApp.MyRoleProvider"
writeExceptionsToEventLog="false" />
</providers>
</roleManager>
Следует отметить, что мы рассмотрели этот вопрос, но его ответ не относится к нашей ситуации.
1 ответ
Я чувствую себя как дурак, который должен дать этот ответ, но, надеюсь, он может помочь кому-то, кто испытывает подобные проблемы. Хотя казалось, что все свидетельства указывают на то, что поставщик пользовательских ролей не вызывается, это действительно так. Оказалось, что его не вызывали из-за кэширования наших ролей. Как вы можете видеть в приведенном выше фрагменте, у нас было следующее:
cacheRolesInCookie="true">
Это заставило менеджера ролей использовать роли, которые мы не ожидали, поскольку мы манипулировали ими во время тестирования. Когда мы изменили свойство на "false", все стало работать как положено.