0

我在我的网站上遇到了奇怪的问题,我有菜单,我正在处理它asp:menuSiteMap现在我想限制menu's基于roles,所以我securityTrimmingEnable="true"在 web.config 中使用,现在我的问题是我有一些需要启用的菜单项由 2 种类型的用户(管理员和登录用户),现在在Web.Sitemap文件中,我创建了siteMapNode在菜单中使用的,这里我添加了roles属性来指定哪些类型的用户可以访问菜单,有一个主菜单应该只能由这 2 个用户访问,其他任何人都不能访问(即非匿名),现在我找不到在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>
4

1 回答 1

0

实际上对角色属性的使用存在误解。在您的情况下,它不仅限于“管理员”,还显示为其他角色。菜单项根据使用<location>web.config 文件中的标记指定的授权设置进行限制。查看下面的文章了解更多信息。

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

于 2012-12-17T21:41:56.087 回答