C# 站点地图菜单和角色

C# 站点地图菜单和角色,c#,asp.net,sitemap,C#,Asp.net,Sitemap,我正试图创建一个基于角色的站点地图菜单,但当我将所有角色添加到根菜单,然后将单个角色添加到单个菜单项时,我总是会得到菜单中的所有内容 <?xml version="1.0" encoding="utf-8" ?> <siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" > <siteMapNode url="" title="Menu" description="" roles

我正试图创建一个基于角色的站点地图菜单,但当我将所有角色添加到根菜单,然后将单个角色添加到单个菜单项时,我总是会得到菜单中的所有内容

<?xml version="1.0" encoding="utf-8" ?>
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" >
  <siteMapNode url="" title="Menu"  description="" roles="Role1;Role2;Role3">
    <siteMapNode url="~/page1.aspx" title=""  description="" roles="Role1;Role2;Role3">
    </siteMapNode>
    <siteMapNode url="~/page2.aspx" title=""  description="" roles="Role2; Role3">
    </siteMapNode>
    <siteMapNode url="~/page3.aspx" title=""  description="" roles="Role3">
    </siteMapNode>
  </siteMapNode>
</siteMap>

如上所述,角色1、2、3可以查看根菜单。 我是角色1的一部分,因此我应该只被允许查看page1.aspx,但我可以看到所有三个

如何解决这个问题

菜单的显示方式如下:

第1页|第2页|第3页

因此,如果我只是在角色1中,我应该看到:


第1页|

您是否将securityTrimmingEnabled设置为true?

请按照Rolla网站地图菜单教程第3节中的4guysfromrolla进行操作-

可以使用以下模式通过Web.config文件配置站点导航设置:


有关详细信息,请参阅本文。

是,它已启用

<siteMap defaultProvider="WMSSiteMapProvider">
      <providers>
        <clear/>
        <add name="WMSSiteMapProvider" type="System.Web.XmlSiteMapProvider" securityTrimmingEnabled="true" siteMapFile="WMS.sitemap"/>
      </providers>
    </siteMap>


这可能会有所帮助,谢谢。但我似乎无法使用sitemap文件和角色创建asp:菜单,因为需要在web.config文件而不是sitemap文件中创建对每个页面的访问。这使得网站地图在创建基于角色的菜单时毫无用处。但对于访问来说,这很好,因为我可以使用它:但问题是使用Web.sitemap,如果只需要为非特定角色的用户提供访问权限,它就变得毫无用处了。i、 e如果非管理员的角色被添加到站点地图中,则可以授予其访问管理员页面的权限。感谢该链接实际上完全解释了站点地图,并且它们实际上并不像人们想象的那样工作,但是站点地图仅用于为不在特定角色中的人提供额外的访问权限(例如,为不在管理员角色中的人提供管理员访问权限)
<siteMap defaultProvider="WMSSiteMapProvider">
      <providers>
        <clear/>
        <add name="WMSSiteMapProvider" type="System.Web.XmlSiteMapProvider" securityTrimmingEnabled="true" siteMapFile="WMS.sitemap"/>
      </providers>
    </siteMap>