让我首先说我所拥有的东西 - 我只是不喜欢它。
我有一个用于导航栏的 web.sitemap。每个人都可以访问一些节点,其中一些节点分配了角色(这样节点就不会显示给无法访问它的用户)。
IE<siteMapNode url="~/adminpage.aspx" title="admin" roles="domain\Administrators"/>
然后,在我的 web.config 中,我有如下位置元素:
<location path="adminpage.aspx">
<system.web>
<authorization>
<allow roles="domain\Administrators"/>
<deny roles="*"/>
</authorization>
</system.web>
</location>
除此之外,某些页面还具有基于角色显示或隐藏的超链接,如下所示:
myHyperlink.Visible = Roles.IsUserInRole(@"domain\Administrators");
所有这些工作都很好 - 但是......这似乎有点荒谬。有什么方法可以利用站点地图和 Roles.IsUserInRole 在我的 Web.config 中建立的权限?基本上,我试图防止在 435234 个不同的地方拥有相同的权限描述。
我尝试使用 Casses 解决方案在站点地图文件中添加嵌入代码,该代码将使用 Web 配置中的设置——但这不起作用(因为您不能将嵌入代码放入站点地图文件中)。