具有 Windows 身份验证的自定义角色提供者
Custom Role Provider with Windows Authentication
我们在 ASP.NET 网络表单 Intranet 站点中有一个自定义角色提供程序。我们已确保此 class 从 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问题,但其答案不适用于我们的情况。
我觉得必须提供这个答案是个傻瓜,但希望它可以帮助遇到类似问题的人。虽然似乎所有证据都表明自定义角色提供程序未被调用,但它确实被调用了。由于我们的角色被缓存,它似乎没有被调用。正如您在上面的代码片段中看到的,我们有以下内容:
cacheRolesInCookie="true">
这导致角色管理器提取了我们没有预料到的角色,因为我们在测试期间正在操纵它们。当我们将 属性 更改为 "false" 时,一切都按预期开始工作。
我们在 ASP.NET 网络表单 Intranet 站点中有一个自定义角色提供程序。我们已确保此 class 从 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问题,但其答案不适用于我们的情况。
我觉得必须提供这个答案是个傻瓜,但希望它可以帮助遇到类似问题的人。虽然似乎所有证据都表明自定义角色提供程序未被调用,但它确实被调用了。由于我们的角色被缓存,它似乎没有被调用。正如您在上面的代码片段中看到的,我们有以下内容:
cacheRolesInCookie="true">
这导致角色管理器提取了我们没有预料到的角色,因为我们在测试期间正在操纵它们。当我们将 属性 更改为 "false" 时,一切都按预期开始工作。