asp.net SiteMap中的SecurityTrimming

时间:2012-12-17 20:23:29

标签: asp.net sitemapprovider securitytrimmingenabled

我在我的网站中遇到了一个奇怪的问题,我有菜单,我正在处理asp:menuSiteMap,现在我想根据menu's限制roles ,所以我在web.config中使用securityTrimmingEnable="true",现在我的问题是我有一些菜单项需要由2种类型的用户(管理员和登录用户)启用,现在在Web.Sitemap文件,我创建了siteMapNode在菜单中使用,这里我添加了roles属性来指定哪些类型的用户可以访问菜单,有一个主页菜单应该只有这两个访问用户而不是其他人(即非匿名用户),现在我找不到在roles属性中指定多个角色的方法,我也尝试指定*但这似乎也适用于非匿名用户,这不是我的要求,这是我的web.sitemap文件的样本

 <siteMapNode roles="*">
    <siteMapNode roles="Administrator" url="~/default.aspx" title="HOME" />
 </siteMapNode>

在上述情况下,主菜单仅供管理员使用。现在,如果我指定*使其可供非管理员但登录用户使用,它也适用于未登录的用户。

 <siteMapNode roles="*">
    <siteMapNode roles="*" url="~/default.aspx" title="HOME" />
 </siteMapNode>

无论如何,我可以将上述菜单提供给管理员并仅登录用户 下面是我的web.config设置:

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

1 个答案:

答案 0 :(得分:0)

实际上对于角色属性的使用存在误解。在您的情况下,它不是限制为“管理员”,而是显示其他角色。根据使用web.config文件中的<location>标记指定的授权设置来限制菜单项。有关详细信息,请查看以下文章。

http://stweet.wordpress.com/2010/06/13/designing-the-folder-structure-of-the-asp-net-web-application/