【发布时间】:2011-10-05 18:43:04
【问题描述】:
我有一个自定义角色提供程序,它使用标准的 asp 站点地图和菜单控件。我启用了 securitytrimming,并且当我修改 web.config 时,菜单项成功消失/重新出现:
<location path="x/y/z.aspx">
<system.web>
<authorization>
<allow roles="a, b, c" />
<deny users="*" />
</authorization>
</system.web>
</location>
但不幸的是,每当我访问这样的页面时,我都会看到非常基本的“500 - 内部服务器错误”。
如果我从配置中删除上述行,则不会发生此类错误(但每个人都可以访问该页面!)
这可能与我的自定义角色提供者有关吗?它似乎适用于其他一切!我只覆盖了 IsUserInRole 和 GetRolesForUser 函数(所有其他强制函数我什么都不返回或空数组等)。
谢谢! :)
编辑:
我很确定这不是我的自定义角色提供程序导致错误。我的 web.config 中确实有以下内容。
<location path="." inheritInChildApplications="false">
我的大部分配置都保存在本节中,其想法是我的所有 appSettings、sessionState、身份验证选项等都不会被继承到其他应用程序中,这些应用程序在 IIS 中设置,但保存在我的应用程序的子文件夹中正在努力。也许这个“位置”内部的某些部分没有被转移到其他“位置”(即使它们不是子应用程序......!)混淆 securityTrimming 确实有效......无论如何通过移动内容该部分之外的上述“位置”,一切正常!有没有两全其美的方法?
【问题讨论】:
-
我已经用更多信息编辑了 q。我相信它不再是一个角色提供者/修剪问题。不确定是完全重新编辑、发布新问题还是离开按原样.. 谢谢大家的帮助。
标签: asp.net web-config authorization