Windows身份验证的自定义角色提供程

时间:2015-01-14 05:46:01

标签: asp.net webforms roleprovider

我们在ASP.NET Web表单Intranet站点中有一个自定义角色提供程序。我们确保此类继承自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>

应该注意的是,我们已经审核了this个问题,但其答案并不适用于我们的情况。

1 个答案:

答案 0 :(得分:2)

我觉得傻瓜不得不提供这个答案,但希望它可以帮助那些遇到类似麻烦的人。虽然似乎所有证据都指出自定义角色提供程序没有被调用,但它实际上是。由于我们的角色被缓存,它似乎没有被调用。正如您在上面的代码段中所看到的,我们有以下内容:

cacheRolesInCookie="true">

这导致角色管理器拉出我们没想到的角色,因为我们在测试期间操纵它们。当我们将属性更改为“false”时,一切都按预期开始工作。