Пользовательский поставщик ролей с аутентификацией 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", все стало работать как положено.

Другие вопросы по тегам