SiteMap菜单和角色

时间:2012-05-22 14:45:56

标签: 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="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可以看到根菜单。 我是Role1的一部分,因此我只能被允许看到page1.aspx,但我可以看到这三个。

如何解决这个问题?

菜单显示如下:

Page1 |第2页第3页

所以如果我只在Role1中,我应该看到:

Page 1 |

3 个答案:

答案 0 :(得分:1)

您是否将securityTrimmingEnabled设置为true?

答案 1 :(得分:1)

按照4guysfromrolla的站点地图菜单教程第3部分 - Configuring Site Navigation to Use Security Trimmings

进行操作

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

<siteMap defaultProvider="XmlSiteMapProvider" enabled="true">
  <providers>
    <add name="XmlSiteMapProvider"
      description="Default SiteMap provider."
      type="System.Web.XmlSiteMapProvider"
      siteMapFile="siteMapFileName"
      securityTrimmingEnabled="true" />
  </providers>
</siteMap>

按照文章了解详细信息..

答案 2 :(得分:0)

是的,它已启用。

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