SecurityTrimming in asp.net SiteMap



我在我的网站中遇到了一个奇怪的问题,我有菜单,我用asp:menuSiteMap处理,现在我想基于roles限制menu's,所以我在web.config中使用securityTrimmingEnable="true",现在我的问题是我有一些菜单项需要由两种类型的用户(管理员和登录用户)启用,现在在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>

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

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

相关内容

  • 没有找到相关文章