我有一个启用了安全修剪的 web.sitemap,但是我需要根据 web.config 中没有访问规则的页面的角色隐藏菜单项。
即我有一个营销活动页面,用于查看现有营销活动以及添加新营销活动,但我希望对匿名用户隐藏“新营销活动”菜单项。
我尝试将角色名称添加到 web.sitemap 中的角色属性中,但这没有效果。
我确信必须有一种快速的方法来做到这一点,而无需修改站点地图提供程序,这是我的下一个停靠点。
I have a web.sitemap with security trimming enabled, however I need to hide a menu item based on a role to a page that has no access rules in the web.config.
i.e I have a Campaign page that is used to view existing campaigns as well as to add new campaigns, but I want the "New Campaigns" menu item to be hidden for anonymous users.
I tried adding the role name to the roles attribute in the web.sitemap but this has no effect.
I'm sure there must be a quick way to do this without modifying the sitemap provider which is my next port of call.
发布评论
评论(2)
如果这只是匿名用户的特殊情况,您可以创建第二个站点地图。
创建一个新文件 WebAnon.sitemap。
在 web.config 中创建新的站点地图提供程序
设置 SiteMapDataSource 的 SiteMapProvider 属性更改为后面代码中的“anonProvider”。
If this is just a special case for anonymous users, you could create a second SiteMap.
Create a new file WebAnon.sitemap.
Create a new sitemap provider in the web.config
Set the SiteMapDataSource's SiteMapProvider property to "anonProvider" in the code behind if its an anonymous user.
中的roles
属性是“允许”列表,而不是拒绝列表。 在 web.config 中创建/修改相应的
元素以允许经过身份验证的用户并拒绝匿名用户; 例如,顺便说一句,如果您使用 Windows 主体和角色,则对组成员资格的任何更改都不会生效,直到您注销然后重新登录。
The
roles
attribute in a<siteMapNode />
is an "allow" list, not a deny. Create/modify a corresponding<location />
element in web.config to allow authenticated users and deny anonymous; e.g.BTW, if you're using a Windows principal and roles, any changes to your group membership don't take effect until you log off and then back on.